您的位置:首页技术文章
文章详情页

java - 压测tomcat,无法理解其工作机制?

【字号: 日期:2023-10-18 13:33:26浏览:34作者:猪猪

问题描述

前提:1.公司进行一台部署有http服务的压测,第一天进行了一晚上(10h)的测试(一次200并发),吞吐量大概56%左右。第二天(期间没有重启过tomcat)也进行了一晚上(10h)测试(一次200并发),吞吐量却降低至16%左右。环境一样,为何落差那么大?2.我第一天压测1000个并发时,线程数大概是1000+,但是第二天(期间没有重启过tomcat)压测1000并发时,线程数却降到700+,为何之前并发数和线程数成正比,后面却不是了?

上述两个前提,请问tomcat是有什么策略,还是jdbc连接池或者redis连接池导致以上现象吗(使用G1回收机制)?

问题解答

回答1:

这情况就复杂了,其复杂度取决于你的项目运行环境、依赖哪些其他服务。如果你的压测环境复杂(就是很多人都在你这台服务器上运行自己的东西),那压测结果不稳定是可以预见的。

遇到吞吐量下降时,先判断瓶颈在哪里:

本机资源是否紧张。本机资源主要包括 CPU、内存、网络带宽和磁盘吞吐。这些都需要进行观测排查。

依赖服务是否紧张,如数据库、外部接口是否处理时间过长。

如果这些都无法明显定位问题所在,那就进入程序调试阶段了:在每个请求处理过程中,记录每一步的时长,找出瓶颈在哪一步,这个粒度会很细,会要反复修改日志,反复运行,反复观察,但一定会找到问题。

不要一遇到问题就做没有根据的胡乱猜测,这时候“发散思维”帮不上忙,要做的是对问题顺藤摸瓜,严谨分析。

标签: java