性能方面应该注意的地方(持续更新)

本文提供了十个实用的技巧来帮助提升系统的整体性能,包括合理利用资源、优化数据库操作、采用高效的IO处理方式等。

1 重型的对象,比如数据库的connection,和一些JMSFactory,尽量做到重用,不要用的时候在new,可以先用起来,复用的时候直接从缓存中拿

2 不要用Exception控制流程,因为new 一个Exception的开销是非常大的

3 生命周期长的对象,如果用不着可以在用完后设置为null,便于垃圾回收

4 数据库能批量则批量处理,循环crud是很费IO的

5 加锁尽量细粒度,感觉concurrent的锁对象性能不错,有空纤细研究下concurrent类

6 数据库对于经常查询的数据的条件,index是必要的,但是过多的index会减慢update和insert的速度。

7 io中尽量用buffer,减少IO交互次数.

8 使用缓存,内存数据库,或者集群来提高系统的吞吐量和性能。

9 一般系统产生大量数据后,瓶颈经常是数据库io产生的,前面的index只是一种小的手术。要在结构上提高数据库读写性能,还是拆分数据库,读写分离,数据库大数据表分拆成多个分布式小数据表,等等具体的思路还是拆分,分布式。

10 旧的IO API,因为是阻塞式的,如果处理socket,请启用多线程去handle,否则如果一个请求没有结束,其他的请求会被阻塞住,这样已经很接近非阻塞IO的处理速度了。

今天懒了,不想了。。。

<think>我们之前讨论的是通信设备中的TPS保护(TributaryProtectionSwitching),但根据当前用户提供的引用内容,用户现在询问的TPS(TransactionsPerSecond)是性能测试中的每秒事务处理量。需要切换上下文。用户的问题:TPS配置时需要注意的事项(这里指性能优化中的TPS配置)根据引用内容:引用[1]:TPS趋势分析中,如果曲线抖动大,需要降低压力线程直到TPS曲线平稳。引用[2]:TPS的定义,即每秒事务处理量,与QPS的区别(QPS是每秒查询数,一个事务可能包含多个查询)。引用[3]:系统配置参数调整(如TCP参数)可以提升TPS。引用[4]:TPS压不上去的原因,包括应用架构(如动静分离)等。因此,用户想知道在配置系统以提升TPS时需要注意哪些事项。回答结构:1.明确TPS配置的目标:提高系统处理能力,稳定TPS曲线。2.注意事项分几个方面:系统参数配置、应用架构、测试方法、监控分析等。注意事项:-系统参数配置:如引用[3]提到的TCP参数调整(端口范围等),还有文件描述符限制、网络栈参数等。-应用架构优化:如引用[4]提到的动静分离,还有缓存、数据库优化、异步处理等。-测试方法:如引用[1]提到的,压力线程设置要合理,避免TPS曲线抖动过大,应逐步加压。-监控分析:在测试过程中监控系统资源(CPU、内存、IO、网络)和应用指标(响应时间、错误率),以定位瓶颈。同时,注意引用[2]中关于TPS和QPS的区别,避免概念混淆。根据要求,需要生成相关问题。注意:用户之前的问题是关于通信设备TPS保护的命令行,但当前问题已经切换到性能测试的TPS。因此,回答要基于性能测试的上下文。</think>### TPS配置注意事项(性能测试场景) 在性能测试中配置TPS(每秒事务处理量)时需重点关注以下方面,确保测试结果真实反映系统处理能力: --- #### **一、系统参数配置** 1. **网络栈优化** ```bash # 调整TCP连接参数(引用[3]) net.ipv4.tcp_tw_reuse = 1 # 允许复用TIME-WAIT连接 net.ipv4.tcp_max_syn_backlog = 8192 # 增大SYN队列 net.ipv4.ip_local_port_range = 1024 65535 # 扩大端口范围 ``` - **注意**:避免过度扩大`tcp_max_tw_buckets`,可能消耗过量内存[^3]。 2. **文件描述符限制** ```bash # 检查当前限制 ulimit -n # 永久修改(CentOS示例) echo "* soft nofile 65535" >> /etc/security/limits.conf ``` --- #### **二、应用架构配置** 1. **动静分离** - 静态资源(HTML/CSS/JS)部署在Nginx或CDN,动态请求路由至应用服务器(引用[4])。 - **验证命令**: ```bash curl -I http://domain/static/image.jpg | grep Server # 确认静态资源由Nginx处理 ``` 2. **连接池配置** - 数据库连接池:设置合理`maxActive`(如50-100),避免连接泄漏。 - 线程池:核心线程数建议为`CPU核数*2`,最大线程数需压测调整。 --- #### **三、压力测试策略** 1. **加压策略** - 阶梯式加压:每阶段增加10%线程,持续5分钟(避免瞬时过载)。 - **临界点判定**:当TPS曲线出现剧烈抖动时(引用[1]),立即回退线程数至平稳状态。 ![](https://example.com/tps-curve.png) *图:合理TPS曲线应呈平滑阶梯状[^1]* 2. **事务设计原则** - 明确区分TPS与QPS: - TPS:包含完整业务逻辑(如登录+下单支付) - QPS:单接口请求量(如商品查询) - **比例**:通常1 TPS ≥ 2 QPS(引用[2]) --- #### **四、监控关键指标** | 指标 | 健康阈值 | 检查命令 | |---------------|------------------------|----------------------------| | CPU使用率 | <70% | `top -1` | | 内存占用 | 无OOM | `free -m` | | 磁盘IO延迟 | <10ms | `iostat -x 1` | | 网络丢包率 | 0% | `sar -n DEV 1` | | 事务错误率 | <0.5% | 测试工具报表 | --- #### **五、典型配置错误** 1. **资源争用** - 现象:TPS波动>30%(引用[1]) - 解决:隔离数据库/缓存到独立物理机。 2. **线程阻塞** - 现象:TPS随线程数增加反而下降 - 定位: ```bash jstack <pid> | grep -A 10 BLOCKED # Java应用 ``` 3. **TCP连接耗尽** - 现象:`Cannot assign requested address`错误 - 解决:优化`net.ipv4.ip_local_port_range`并减少短连接[^3]。 > **关键原则**:TPS配置目标不是单纯提高数值,而是找到系统在**稳定态下的最大处理能力**。每次参数调整后需验证业务成功率(≥99.9%)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值