这几天项目压测总结

这几天的经历可不太好啊。
项目有TPS的要求。
压测搞了很多天,TPS总是达不到要求。
各个开发人员盯着自己开发的部分,优化了不少地方,优化后,各自在本地测试TPS都有极大的提高。但是更新到测试环境(阿里云),正式压测,TPS却没有明显提高。
期间,真的是各种优化代码、Nginx配置、tomcat配置、MySQL配置;换不同机器、网络压测,单点压测;排除压力机性能问题、网络问题、服务器问题;能试的都试过了,TPS就是上不去,而且有个很奇怪的现象:不管怎么优化,TPS都是70几。
而且排除了很多问题之后,有一个百思不得其解的问题是:观察压力机资源使用也很低,说明压力机没有问题;但是,服务器也没有承受太大的压力;于是觉得是网络问题导致提供不了压力,可是,最后网络问题也排除了。
这时候就很痛苦了,都没有问题,但就是达不到要求,眼看就要上线。
时间到了上线前一天晚上10点了。什么都试过,什么都换过了,想来想去,也就压测工具(jmeter)没有换过了,死马当活马医,重新下载了一个同版本的jmeter,打开,导入我的压测脚本,报错!!
这个报错很重要啊。最后就是靠这个报错解决了问题。仔细看错误信息,提示第266行......,打开脚本仔细看,是我添加的一个JMeterPlugin性能监控插件报错。这时候我才想起,在2016年的时候我本机的jmeter安装过一个性能监控的插件JMeterPlugin,而现在新下载的版本没有安装此插件,所以在脚本添加此插件会报错。在脚本中把此插件删掉,再导入,并发,不可理解的现象出现了,TPS远超要求的数值。
后面,继续多次验证,正是此JMeterPlugin性能监控插件引起无法产生足够的压力(原因为何,还不得而知),导致TPS过低。
也即是说,项目或许本来TPS就已经达标,后来各种优化实际上已经很有效果,只是我本机的jmeter工具的问题,引起无法产生足够的压力,导致TPS过低,所以一直以为优化没有效果。
总结:
虽然折腾了很久,不过也是有收获的,起码可以确定:
1、i58G的PC产生100--200的线程,是确定没有问题的;
2、阿里云6M的带宽、公司下100M(上4M)的网络并发100--200的请求(每个请求发送约1KB的数据)也是完全没有问题的;
3、我们的项目在阿里云(2核,8G)双服务器,两tomcat,公网情况下,100并发,TPS达到250是没有问题的(继续加压应该还可以上);
4、记得各种排除之后,工具也要排除;
东西都是做了才有数据和经验,记录下可以作为以后的参考;
【这几天项目压测总结】总之,折腾这么多天,是我个人问题导致。so sorry。

    推荐阅读