文档章节

记一次性能压测的问题排查过程

ericquan8
 ericquan8
发布于 2017/07/23 23:57
字数 1079
阅读 68
收藏 1

最近一直在搞性能压测,断断续续的搞了一个月了,中间遇到各种问题,这里将这些问题分享下,以后大家踩坑时可以参考~

俗话说,工欲善其事,必先利其器。拿到机器,先检查CPU、内存、网卡、磁盘四大件。咋知道这第一关就踩雷了,dstat -tamps一下,看见网卡的出口流量总是为0:

出口流量为0,怀疑是读数有问题,如果只能进不能出,那根本无法远程到这台机器上。wget证实一下

下载文件成功,证明只是网卡出口数据包显示有问题,而网卡一直正常发送数据包。最后找运维的兄弟看看,说是网卡驱动问题,立即升级驱动重启机器解决问题。效率高得不得不给个赞!!

环境OK了,开始干活。把jmeter跑起来,使劲的调整着压测线程数,同时看着业务机的状态,实际发现无论怎么调整jmeter的压测线程数,应用的tps也无法上去,而且应用机器的水位都属于正常范围,没有任何压力;再检查ulimit,正常;再看看业务日志,有少量的业务错误日志(下游依赖的数据mock返回失败造成),属于正常范围。接着开始怀疑是tomcat的工作线程数太小,打开server.xml,逐次加大maxConnections、maxThreads的值,峰值tps也没有任何提升;同时检查此时应用的jstack+gc,没有发现异常。开始陷入困境:TPS上不去,机器压力低,业务处理也算正常范围,开始怀疑不是tomcat的问题了。既然机器压力不高,怀疑请求是不是没到机器?先用netstat检查了业务端口的连接数

发现ESTABLISH状态的连接才是100。而且连续打了几遍,都在100附近徘徊。发现问题了,我启动jmeter的启动脚本明明是设置了线程数为200的;按理说在应用机器压力不大的情况下,连接数起码也接近200吧。去问提供压测脚本的兄弟,然后豁然开朗了,调整压测线程数的方式没生效,压测代码不支持从启动脚本中配置压测线程数,得改配置文件才生效~~o(>_<)o ~~

好,恢复心情,以正确的姿势调整好压测线程数继续测。线程数一直往上涨,当加到400时,新问题又出现。tps突然降低至0,半分钟后又恢复正常,后面就一直0、正常、0、正常的间隔着。但跌0的时候,应用机器的水位数据跟没压测时是一样的。首先怀疑业务线程卡住了,jstack一把看,正常。翻看业务日志,都是mock返回的数据跟预期的不一样导致的错误,认为正常了;再看依赖库osp错误日志,看到有超时9000ms的日志;找负责mock的兄弟一起排查,他怀疑是osp-client跟proxy设置的线程数不够,建议调整osp-client跟proxy的线程数看看。当时就立马调大看了也没效果。其实现在仔细想想,是跟这个没关系的,就算osp-client的线程数不够,那起码也是部分请求因为等待工作线程响应慢而已,不应该TPS全掉0的;从错误日志看很大几率是mock端返回数据超时导致了。为了再证实这个事实,满足下好奇心,祭出大杀器。tcpdump一把,等到TPS掉0时结束,将数据拉回本地用Wireshark看

明显看到这两个数据包之间,时间间隔了24秒,能解析通了。再确认下是不是mock机器没返回数据包,加个筛选条件tcp.stream eq 75(有问题的数据流):

144是mock的机器,79是业务机。发现144->79的数据包,全部都是ACK类型的,只是向79发送ACK包,而没有返回任何的业务数据,这下水落石出了,剩下的辛苦mock的兄弟了。

© 著作权归作者所有

共有 人打赏支持
ericquan8
粉丝 6
博文 17
码字总数 21301
作品 0
广州
程序员
记5.28大促压测的性能优化—线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得这个还是比较有意思的,值得总结拿出来分享下。...

王清培
2017/06/04
0
0
性能压测诡异的Requests/second 响应刺尖问题

最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码、debug、fixbug都逐渐收尾,进入上线前的性能压测。 虽然不是大促前的性能压测要求,但是为了安全起见,需要摸个底心里有个数...

王清培
2017/09/23
0
0
性能压测诡异的Requests/second 响应刺尖问题

最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码、debug、fixbug都逐渐收尾,进入上线前的性能压测。 虽然不是大促前的性能压测要求,但是为了安全起见,需要摸个底心里有个数...

王清培
2017/09/23
0
0
保障了罗振宇跨年演讲的PTS铂金版正式上线,产品体验全新升级

摘要: 虽然2018年的跨年已经过去,但是对于今年各种新颖的跨年形式,不少人仍然意犹未尽。比如,罗振宇在深圳卫视和优酷直播的跨年演讲《时间的朋友》。据悉,当天现场参与人数近万,观看直...

阿里云云栖社区
01/19
0
0
Java性能调优

事情发生在16年了。当时系统beta版本进行上线前的性能压测时,发现进程的内存占用率会持续升高,与之而来的时,性能的接口性能的持续下降。最奇怪的是,停止压测后CPU和内存开销并没有恢复过...

稳稳的
2017/11/12
451
2

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部