問題描述:在執行單交易負載腳本的時候發現,在本地跑腳本,異常率0%,同樣的腳本放到發壓機上執行,就出現了大面積的報錯


原因分析:Linux分配給客戶端連接的端口用盡,無法建立socket連接導致,雖然socket關閉了,但端口默認等待60s才會釋放,所以只要我們再多給點可用的端口就好了。
解決步驟:
1、查看Linux支持的客戶端連接端口范圍:cat /proc/sys/net/ipv4/ip_local_port_range

2、調低端口釋放后的等待時間,默認是60s,修改為15~30s:echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

3、修改tcp/ip協議配置,通過配置/proc/sys/net/ipv4/tcp_tw_reuse,默認為0,修改為1,釋放TIME_WAIT端口給新連接使用:echo 1 > /proc/sys/net/ipv4/tcp_tw_resue

4、修改tcp/ip協議配置,快速回收socket資源,默認為0,修改為1:echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
5、配置生效:sysctl -p
修改完成后,再次在發壓機上執行單交易負載腳本,異常率正常:

