此次壓力測試遇到個神坑,在此記錄一筆。
是它 ↓是它↓就是它↓
都怪本人學藝不精,導致摔了個大跟頭。
問題描述:本地電腦是mac pro,並發300執行的時候,一點毛病沒有,但是同樣的腳本放到centos7.5上去執行的時候,就出現了大面積如上的錯誤。
原因:linux 分配給客戶端連接接的端口用盡,無法建立socket連接所致,雖然socket關閉了,但是端口默認等待60s才會釋放,所以只要我們再多給點可用的端口就好了。
查看Linux支持的客戶端連接端口范圍,也就是28231個端口
cat /proc/sys/net/ipv4/ip_local_port_range
解決:
1. 調低端口釋放后的等待時間, 默認為60s, 修改為15~30s
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
2. 修改tcp/ip協議配置, 通過配置/proc/sys/net/ipv4/tcp_tw_resue, 默認為0, 修改為1, 釋放TIME_WAIT端口給新連接使用。
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
3. 修改tcp/ip協議配置,快速回收socket資源, 默認為0, 修改為1.
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
以上均是參考這位不知名英雄的博文解決---->https://my.oschina.net/u/4345031/blog/4169999
在此謝過😊