php鏈接memcahed出現Cannot assign requested address (99)的解決方法

  今天在將服務器合併後,發現php偶爾會報出 Server *.*.*.* (tcp *****) failed with: Cannot assign requested address (99) 的錯誤,開始懷疑是因爲memcached服務器沒法處理過多的請求,查看memcached服務器並未發現異常。在網上查到了問題的分析和解決方法。php

 

問題分析:服務器

客戶端頻繁的連服務器,因爲每次鏈接都在很短的時間內結束,致使不少的TIME_WAIT,以致於用光了可用的端 口號,因此新的鏈接沒辦法綁定端口,即「Cannot assign requested address」。是客戶端的問題不是服務器端的問題。經過netstat,的確看到不少TIME_WAIT狀態的鏈接。
可見問題不在於server端,而是client端頻繁創建鏈接,而端口釋放較慢,致使創建新鏈接時無可用端口。socket

 

解決方法:
執行命令修改以下2個內核參數 (須要root權限)  sysctl -w net.ipv4.tcp_timestamps=1  開啓對於TCP時間戳的支持,若該項設置爲0,則下面一項設置不起做用 sysctl -w net.ipv4.tcp_tw_recycle=1  表示開啓TCP鏈接中TIME-WAIT sockets的快速回收tcp

 

原帖地址:http://blog.csdn.net/mmbl007/article/details/7446970memcached

相關文章
相關標籤/搜索