jmeter測試接口-打開很多TCP的連接數TIME_WAIT狀態(Linux環境)導致報錯的解決方法


  一 發現問題:

  服務器是Linux系統,用jmeter測試接口,發現打開很多的TCP連接,[root@m3-2 bin]# ulimit -n 65535用這個命令設置了總的連接數;進行壓測的時候,連接數可能達到50000以上,很容易報錯;查看各個狀態的TCP個數:
netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a,s[a]}',發現連接狀態TIME_WAIT的狀態很多,(統計80端口連接數netstat -nat|grep -i 80|wc -l用這個統計也行)。而不報錯的接口,打開的TCP連接數比較少,約在15000-25000這樣。

  初步懷疑是tcp的TIME_WAIT狀態太多了,導致連接的時間過長,系統的端口資源被長時間的占用,新的請求,又分配不到資源。

  二 解決方式:

  經過3天多的時間,終於找到了有效的解決方案,可以參考該微博:http://blog.oldboyedu.com/tcp-wait/:

在sysctl.conf配置文件中# vim /etc/sysctl.conf,修改成如下的配置:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1

再運行起來,TCP的連接數明顯下降了,而且接口的TPC上升了,不容易報錯,如下圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM