关于TPS与CPU的性能综合分析

关于TPS与CPU的性能综合分析

1.长时间压测过程中TPS不断下降,CPU使用率不断降低
原因:线程死锁导致
使用jps -l获取线程信息
使用jstack -l {PID} 查看线程死锁或则线程阻塞情况
线程死锁:搜索deadlock关键字进行查找
线程阻塞:搜索blocked关键字进行查找
关于TPS与CPU的性能综合分析_第1张图片
2.并发数不断增加,TPS上不去,CPU使用率较低
原因:SQL没有创建索引/SQL语句筛选条件不明确、代码中设有同步锁。
优化SQL
去掉同步锁

3.高并发下大量报错
原因解析:常见的原因有短连接导致的端口被完全占用以及线程池最大线程数配置较小及超时时间较短导致。
调优方案:
短连接问题:修改服务节点的tcp_tw_reuse参数为1,释放TIME_WAIT scoket用于新的连接。
线程池问题:修改服务节点中容器的server.xml文件中的配置参数。

# 最大线程数,即服务端可以同时响应处理的最大请求数
maxThreads="200"                        
# Tomcat的最大连接线程数,即超过设定的阈值,Tomcat会关闭不再需要的socket线程      
maxSpareThreads="200"              
# 所有可用线程耗尽时,可放在请求等待队列中的请求数,超过该阈值的请求将不予处理,返回Connection refused错误
acceptCount="200"                
# 等待超时的阈值,单位为毫秒,设置为0时表示永不超时
connectionTimeout="20000"      

你可能感兴趣的:(性能测试,java,tomcat,开发语言)