jmeter壓測遇到的問題


一、今天壓力測試時,開始12秒后出現了很多異常, 都是 java.net.NoRouteToHostException: Cannot assign requested address. 

1、首先我這瀏覽器可以正常訪問接口,排除了是防火牆問題,不是被牆了。

2、開發用apacheab可以進行壓測,並且返回數據良好,排除了是tcpip的的連接數問題。

如果是這個問題,解決辦法如下:

經網上查資料, 是由於linux分配的客戶端連接端口用盡, 無法建立socket連接所致,雖然socket正常關閉,但是端口不是立即釋放, 而是處於TIME_WAIT狀態, 默認等待60s后才釋放。
    查看linux支持的客戶端連接端口范圍, 也就是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_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
3、最后發現是jmeter的keepalive沒有關閉,這里是http的keepalive。
這里消息結束后沒有及時關閉連接導致鏈接不夠用。
關閉后,成功解決。


免責聲明!

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



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