? ? jmeter接口压测并发500以下时正常,一旦设置600或更多时接口报错,且并发数量越大,错误率越高,为此在网上找了一大堆解决方案,均未能正常解决。最后通过自己查找日志及资料完美解决!!!
为了防止不提供原网址的转载,特在这里加上原文链接: https://blog.csdn.net/hangzhang_joker/article/details/120456864?spm=1001.2014.3001.5501
网上解决方案 :
1. SocketException: Socket closed 错误的原因通常是 未设置连接的超时时间。 如果在 HTTP Request Sampler 的 Basic 里勾选了Use KeepAlive,那么建议在 Advanced 页签下: Implementation 选为 HttpClient4 Timeouts 中的 Connect 一般设置一个10~60秒的值,表示连接的空闲超时时间,避免由于没收到被压测端的响应回来的 Keep-Alive 的 Header 导致的连接断开,填写为:15000s
通过上述方法设置后,再次压测,还是会出现这个错误 找到jmeter安装路径D:\jmeter\apache-jmeter-5.4.1\bin下的jmeter.properties 将httpclient4.retrycount=0 改为 =1 参考链接https://cwiki.apache.org/confluence/display/jmeter/JMeterSocketClosed?spm=a2c4g.11186623.2.16.41ff41eaJzLjlR 修改后测试仍然无效
2.SocketException: Connection reset 3.Non HTTP response message: Connect to 1.117.178.121:80 [/1.117.178.121] failed: connect timed out
4…NoHttpResponseException: The target server failed to respond 找到jmeter安装路径D:\jmeter\apache-jmeter-5.4.1\bin下的jmeter.properties, 设置httpclient4.idletimeout=,一般可设置成10-60s(表示连接空闲10s后才会断开)例:httpclient4.idletimeout=3000
不出意外修改后测试仍然无效
最后
万事还得靠自己
查找nginx日志 : tail -f /var/log/nginx/error.log 发现如下报错: 查找资料,了解到为nginx配置项中的worker_connections 最大数量限制
修改配置 :vi /etc/nginx/nginx.conf 修改为10240 重启nginx: cd /usr/sbin/ ./nginx -s reload
完美解决,然而随着并发量增大,发现并发量超过1000时又开始报错
最后查看docker报错,开发修改数据库连接和超时设置,完美跑到5000并发