標籤:tcp/ip 營運 centos 自動化
前言
使用centos6.5系統內建的 netstat,grep,watch等命令,來分析網路連接狀態,要求對 TCP 有限狀態機器的概念有較深入的理解。
同時,這也是除了使用強大的專業第三方協議分析器,如 wireshark 以外,最有效辦法。
寫本博文的目的其中之一就是要告訴大家,不使用 wireshark 等第三方工具,自己也能做到一定粒度的網路連接,狀態分析,調試等等。
用到的命令總結如下:
watch -n 1 -d ‘netstat -antupeo | grep --color 8.8.8.8‘
watch -n 1 -d ‘netstat -antupeo | grep --color SYN_SENT‘
watch -n 1 -d ‘netstat -antupeo | grep --color TIME_WAIT‘
watch -n 1 -d ‘netstat -antupeo | grep --color ESTABLISHED‘watch -n 1 -d ‘netstat -antupeo | grep --color FIN_WAIT1‘
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/39/54/wKioL1O41PPxaE5FAA0KapATTC0505.jpg" title="巧用netstat命令的參數分析TCP串連與關閉過程1.jpg" alt="wKioL1O41PPxaE5FAA0KapATTC0505.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/39/54/wKiom1O41dHwHL2oAA7MIcTYGmg080.jpg" title="巧用netstat命令的參數分析TCP串連與關閉過程2.jpg" alt="wKiom1O41dHwHL2oAA7MIcTYGmg080.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/39/54/wKioL1O41diQjgQxAA_NDwzNSMY576.jpg" style="float:none;" title="巧用netstat命令的參數分析TCP串連與關閉過程3.jpg" alt="wKioL1O41diQjgQxAA_NDwzNSMY576.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/39/54/wKioL1O41ffhPJl1ABM4BTS9tjY420.jpg" style="float:none;" title="巧用netstat命令的參數分析TCP串連與關閉過程4.jpg" alt="wKioL1O41ffhPJl1ABM4BTS9tjY420.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/39/54/wKiom1O41jKR81NdABPx6_teK08657.jpg" style="float:none;" title="巧用netstat命令的參數分析TCP串連與關閉過程6.jpg" alt="wKiom1O41jKR81NdABPx6_teK08657.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/39/54/wKioL1O41gqDj1F9AA6voLQiTV4987.jpg" style="float:none;" title="巧用netstat命令的參數分析TCP串連與關閉過程7.jpg" alt="wKioL1O41gqDj1F9AA6voLQiTV4987.jpg" />
補充說明:關於 TIME_WAIT
前面我們提到過,在用戶端啟動一個長達60秒的 TIME_WAIT計時器,並不會有什麼問題;但是如果在一個高並發訪問,高負載的伺服器上,這就會引發明顯的效能問題。
原因在於,在伺服器端,每個處於 TCP TIME_WAIT 狀態的 UNIX 域通訊端(假設伺服器端作業系統是 linux,一種 UNIX 的變體)都要佔用一個 TCP連接埠,這些可用的連接埠數量非常有限。
一般只有從1024開始到65535結束的這6萬多個連接埠。
現在假設第一批屬於6萬個不同源 IP的 TCP 串連到達伺服器,而 網頁伺服器在最短時間返回帶 connection: close 回應標頭的 HTTP 響應並啟動60秒的 TIME_WAIT計時器,這意味著在60秒內,這6萬多個連接埠將不可重用。而假設在這期間又有第二批數萬個不同源 IP 的 TCP 串連到達,很明顯,此時伺服器將無法分配任何可用連接埠資源來處理這些串連,從而不得不等待60秒才能釋放被佔用的連接埠資源。
我們可以認為,在這段時間內,該伺服器的可用性與並發能力顯得很低下。
不要以為這個描述的情境不會出現。實際上,對於一些大型互連網公司維護的入口網站而言在,在某一時刻經常會遇到連續數萬,甚至數十萬峰值的並發訪問流量。而且這裡還沒有考慮到遭受分散式阻斷服務攻擊(DDOS)的情況。
或許是有鑒於此,linux 核心就提供幾個參數,配置項,用以調優 TCP/ IP 協議堆棧的效能,包括:
限制處於 TIME_WAIT 狀態的連接埠總數閥值,一旦超過即刻清零
TIME_WAIT 狀態連接埠重用,快速回收
增加可開啟的通訊端描述符(檔案描述符的一種)上限
用於在一定程度上緩解DDOS攻擊的 TCP SYN cookie 技術
因此,從這些意義上而言, linux 確實比 windows 更適合作為大型網站的底層伺服器作業系統。
本文出自 “4681835” 部落格,請務必保留此出處http://4691835.blog.51cto.com/4681835/1434989