记一次生产环境性能压测优化的经历
对线上服务进行性能压力测试的一次优化过程。
项目背景:
1.服务器的硬件配置(48核120G内存2T硬盘);
2.网络部署结构,用户请求报文首先进入负载均衡Nginx,Nginx后端负载两台Tomcat。
现象描述:
测试环境进行压测common 商详接口 1000VU并发,TPS在800左右,硬件有所差距的。测试环境一般差一些。
同样的查询商详接口换生产环境内网域名 商详接口 1000VU并发 TPS在264左右。
查看Tomcat和Nginx各自的log日志,发现Nginx的日志中有大量的“worker_connections are not enough while connecting to upstream” ,错误信息已明确给出了提示,因此修改配置文件nginx.conf,发现 Nginx链接数 默认1024,修改为:
worker_processes auto;
events {
worker_connections 65535;
}
压测 100并发,tps=1690 ,平均响应114ms。
该吞吐量处理能力优秀达到上线标准,与之前tps=264左右,预估提高10倍以上。因为白天不能压测太大。怕影响其他渠道。
测试环境是端口压测 与Nginx负载均衡无关。所以这边分析与nginx链接数有关。
通过压测该性能到达上线标准。压测过程中,使用ELK看日志,Skywalking分析全链路。服务的CPU,内存并不高。所以怀疑是线程的瓶颈。