天天看點

redis連接配接過多的一個解決方法

報錯 Cannot assign requested address

寫了個程式,對redis連續進行100000通路,卻出現以了Cannot assign requested address的問題,我起先以為是redis的問題(可能承受不了這麼多通路量),可是google之,發現原來是:

用戶端頻繁的連伺服器,由于每次連接配接都在很短的時間内結束,導緻很多的TIME_WAIT,以至于用光了可用的端口号,是以新的連接配接沒辦法綁定端口,即“Cannot assign requested address”。

是用戶端的問題不是伺服器端的問題。通過netstat,的确看到很多TIME_WAIT狀态的連接配接。

從網上找了解決辦法:

執行指令修改如下2個核心參數:

sysctl -w net.ipv4.tcp_timestamps=1 開啟對于TCP時間戳的支援,若該項設定為0,則下面一項設定不起作用

sysctl -w net.ipv4.tcp_tw_recycle=1 表示開啟TCP連接配接中TIME-WAIT sockets的快速回收

修改之,解決!!!

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

本文轉自    鵬愛   51CTO部落格,原文連結:http://blog.51cto.com/pengai/1900459

繼續閱讀