最近在接触一个秒杀项目,所以使用JMeter来对秒杀接口进行压测,但是在测试过程中,发现秒杀接口的error率非常高,刚开始以为是业务逻辑出现问题,结果检查之后发现并没有问题,另外,在更换接口压测时,也同样出现了这个问题:
我们从结果树这一栏可以看到其中出现异常的请求是出现了一个名为ConnectionException的异常,具体信息是:地址在本地计算机上无效,或端口在远程计算机上无效。但由于我的项目只部署在本机上,所以应该是地址出现了问题。我们可以看到正常请求的request Body是完整正常的,而那些显示为TCP Sampler的请求,request的地址是空的,所以会出现地址在本机上无效的情况。
在网上找了很多解决方法,有一说法是TCP端口过少,导致在占用期间有其他链接进入导致异常,但其中报的异常是BindException,与我的情况不符合,我抱着死马当活马医的方法尝试着在注册表中修改其参数,参考此文章:解决压测异常率过高的问题,修改过后重启,再次压测,又出现了该文中的异常,如下:
于是乎我又从低到高地对接口进行压测,先是几百,再到几千,甚至到15000,error率都是0,当请求数到达18000的时候,Error率就到达24.36%了。然后也不明白为什么,至今没有找到有效的解决方法。
如果有大神有什么想法或者解决方法的话,请不吝赐教,在此谢过!