hhvm頻繁告警,iostat正常,vmstat正常,實在是想不出什麼地方出問題了。經過診斷是網路出現了問題,出現了大量time_wait和close_wait,
netstat -n | awk '/^tcp/ end '
echo 1 > /proc/sys
/net/ipv4/tcp_tw_reuse
原理:redis的客戶端close乙個鏈結以後,這個鏈結就會進入time_wait狀態,而time_wait狀態的鏈結會在max segment lifetime內都沒有活躍包的情況下關掉。linux這個預設值貌似很長,具體的數值還真不知道,似乎是分鐘級的。。。
悲劇的是,一條tcp鏈結是死是活由源ip和埠,目標ip和埠四個變數決定。那客戶端和伺服器的這四個值都是固定的,所以每次建立新鏈結的同時,處在time_wait的鏈結也被告知,你還不能死。所以執行上述命令,讓tw狀態的鏈結可以reuse
補充:/proc/sys/net/ipv4/tcp_tw_recycle 如果設成1的話,就是快速**tw鏈結,應該也能解決問題
為何redis的time_wait值如此之高
再談應用環境下的time_wait和close_wait
網路狀態診斷
ping自己的回環網絡卡可以知道是不知自身網絡卡的問題 ping自己的外網ip可以知道網絡卡配置是否正確 ping外網的閘道器或者路由器可一直到對外網通不通 ping其他主機可以知道是否已經連通。至於如何判斷網線是否正常,可以通過測試對外網的連通性推斷。自身的網絡卡配置沒有問題,ping外有又不通,...
慎用網路診斷!!
今天網路插上網線的時候不知道為什麼乙太網突然不行了,然後360十分友好地 推薦了 其自家的安全診斷,我也很 友好 的使用了,然而,問題來了,診斷之後不知道之前用virtualbox建立的虛擬機器下的乙個專案就啟動不起來了,想了半天不知道為什麼,然後直接ping目標專案ip,能ping通啊,然後pin...
linux網路診斷故障
1 ip位址無法ping通 當在linux系統中ip位址無法ping通時,主要原因是由於網路資訊配置的錯誤導致的。解決方法 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 ifdown eth0 ifup eth0 然後用ping命令,就可以ping通...