jmeter測試接口-打開不少TCP的鏈接數TIME_WAIT狀態(Linux環境)致使報錯的解決方法

  一 發現問題:vim

  服務器是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狀態太多了,致使鏈接的時間過長,系統的端口資源被長時間的佔用,新的請求,又分配不到資源。tcp

  二 解決方式:測試

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

在sysctl.conf配置文件中# vim /etc/sysctl.conf,修改爲以下的配置:code

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上升了,不容易報錯,以下圖所示:blog

相關文章
相關標籤/搜索