专栏文章 性能测试连载 (35)-一次详细的 TPS 调优笔记

飞天小子的性能课堂 · 2019年12月24日 · 最后由 飞天小子的性能课堂 回复于 2020年02月07日 · 4391 次阅读

性能答疑 QQ 群:697244251

概述

在本地针对项目的登录接口做了一次简单的压力测试。200 并发持续 120s,观察吞吐量

运行结束之后,吞吐量是这样的

如图所示,吞吐量波动巨大,完全不正常。现在我们需要去观察一下服务器了

mpstat -P ALL 1* 先看一下 cpu 的运行情况


可以发现 cpu 的利用率呈现一种阶梯式递增的趋势,但是负载却不高,说明 cpu 运行的问题不大

jstat -gcutil 1 1000 观察一下内存 gc 的情况

老年代内存空间不足了,所以导致新生代的对象进不来,频繁 fullgc,fullgc 的时间又会很长,所以吞吐量一直上不去
检查 jvm 的内存空间配置


堆区总共只有 1g 的内存,几乎全部分给了新生代,导致老年代只有 5M 的可怜空间

修改内存配置
现在来修改一下内存参数,再加入一个并行回收的机制

再次运行脚本,观察 TPS 和 gc 频率


这次运行,fullgc 的频率变得很低了,而且吞吐量也比较平稳,没有什么大的波动。但是运行到一分半钟的时候,吞吐量出现了塌方式的下降,同时出现了异常。
观察异常日志,发现超过了 tomcat 最大连接数了

修改 tomcat 连接数配置,再次运行脚本



这次不像刚刚那要大面积报错了,但是依然有一些异常出现。有一部分是超时,还有一部分是 **Software caused connection abort: recv failed

调整一下请求的连接方式,使用 java 模式,并保持长连接,再观察运行结果


这次一个报错的都没有了!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

并行回收的机制怎么加?

liqing2018 回复

tomcat 配置文件里面加参数。看这个https://testerhome.com/articles/21532

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册