最近在给服务做压测,出现了一个诡异问题。服务部署在三台机器上,请求链路是 压测机 -> LB -> nginx -> 后端服务,其中 nginx 与后端服务同机部署,LB 将请求转发到 3 台机器的 nginx, 每台 nginx 再将请求转发到 3 台机器的后端服务,并且开启了 HTTP 长连接。服务是基于 Spring 的,server 用的 jetty 。
- 服务启动后,第一波压测,3500 并发,QPS 接近 5W ,RT 70ms ,此时都是正常的
- 停止压测机,开启了第二波压测,3000 并发,稳定后 QPS 降到 15000 左右,RT 上升到 200ms
- 检查后端服务监控,请求耗时正常,jstack 打印堆栈发现,jetty 中大量工作线程空闲. 检查 nginx 日志,耗时也正常
- 重新压测,QPS 仍然在 15000 左右,没有提升. 压测过程中重启 nginx ,稳定后 QPS 无变化,重启后端服务,QPS 无变化。停止压测后,重启后端服务,再次启动压测,QPS 恢复到 5w
想问下各位有没有遇到过类似的问题,或者有没有什么排查的思路,感激不尽