最近的專案開始正式running 發生了 因為Port被卡死 導致系統崩潰
這個專案的架構為
Server : Tomcat Java
Clinet : Flash
網路協定用Socket
因為Flash 使用Socket協定 需要認證843 Port
卻因為人數過多 使得843 Port 無法連線
Server 的Log 卻沒有任何的錯誤訊息
監控了很久 發現因為 作業系統 許多資源呈現Close_Wait狀態 導致系統崩潰
因為Linux 系統建立時 默認時間為7200秒 也就是兩小時
所以當許多使用者登入時, 等不到資源釋放就使系統崩潰了 使Port無法連接
只好開始著手更改設定
更改 /proc/sys/fs/file-max , 管理檔案開啟數量限制的檔案 由sysctl.conf控制 將值改成8192 或更大的數字
要確定是否生效 可以下ulimit -a 看是否已生效
更改linux自動管理 自動關閉socket連線 與管理
暫時改法:
sysctl -w net.ipv4.tcp_keepalive_time = 600
sysctl -w net.ipv4.tcp_keepalive_probes = 2
sysctl -w net.ipv4.tcp_keepalive_intvl = 2
如需永久生效 需要更改 /etc/sysctl.conf 重新啟動網路
/etc/rc.d/init.d/network restart
全站熱搜