問題:
錯誤原因: 由於liunx 分配的客戶端連接端口用盡,無法建立socket連接所致,雖然socket正常關閉,但是端口不是立即釋放,而是處於 TIME_WAIT 狀態,默認等待60s后釋放。
查看liunx支持的客戶端連接端口范圍,也就是 28232 個端口。 cat /proc/sys/net/ipv4/ip_local_port_range
32768 - 61000
解決方法:
1. 調低端口釋放后的等待時間,默認為60s,修改為15~30s。echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
2. 修改 tcp/ip 協議配置,通過配置 /proc/sys/net/ipv4/tcp_tw_reuse
,默認為0,修改為1,釋放TIME_WAIT
端口給新連接使用。 echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
3. 修改 ctp/ip 協議配置,快速回收socket資源,默認為0.修改為1。echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
https://blog.csdn.net/weixin_43757847/article/details/88188091
https://my.oschina.net/shichangcheng/blog/1560864
偉程君幫忙找的
后記:
找到解決方法了
修改JMeter.properties中改動httpclient4.idletimeout=<time in ms> 設置成自己認為合理的時間,一般可設置成10-60s(表示連接空暇10s后才會斷開),注意這邊單位是ms。
參考: https://blog.csdn.net/Stesthu/article/details/87968927
后記:
前面對這個概念有點誤解了,建立長連接后,httpclient4.idletimeout這里意思是 長鏈接端口一空閑就斷開,比如服務器還沒響應回來空閑了直接斷開,導致報錯。這里時間應該設置長一點,保持長連接一直保持連接
參考: https://www.cnblogs.com/kaibindirver/p/11957645.html 要使用長連接還要配置一下 請求器見連接有講
查看端口有沒用完 netstat -an 查看是否有端口在 timewait
https://i-beta.cnblogs.com/posts/edit-done;postId=11956755
后記:
配置長連接后,依舊會有報錯問題,最后是要修改mac上端口的釋放時間 參考: https://www.cnblogs.com/kaibindirver/p/11958506.html
而且在jmeter模擬發送請求的時候,請求頭記得要加上