檢視Web伺服器的并發請求數及其TCP連接配接狀态的指令
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
據說是從新浪互動社群事業部技術總監王老大那兒獲得的,非常不錯。
傳回結果一般為
LAST_ACK 247 (正在等待處理的請求數)
SYN_RECV 66
ESTABLISHED 1094 (正常資料傳輸狀态)
FIN_WAIT1 258
FIN_WAIT2 629
TIME_WAIT 4792 (處理完畢,等待逾時結束的請求數)
其他參數說明:
CLOSED:無連接配接是活動的或正在進行
LISTEN:伺服器在等待進入呼叫
SYN_RECV:一個連接配接請求已經到達,等待确認
SYN_SENT:應用已經開始,打開一個連接配接
ESTABLISHED:正常資料傳輸狀态
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
本人shell中awk文法不是特别熟悉,老是關鍵時刻用到這個的時候,不會寫。順便用perl改寫了下,哈哈
#!/usr/bin/perl -w
use strict;
our %hash;
open TCP,'netstat -n|' or die "$!\n";
while ( <TCP> ) {
chomp;
next unless /^tcp/;
if ( exists $hash{(split /\s+/)[5]} ) {
$hash{(split /\s+/)[5]} ++;
} else {
$hash{(split /\s+/)[5]} = 1;
}
}
close TCP;
while ( my($key,$val) = each %hash ) {
print "$key\t$val\n";
一樣的結果
本文轉自dongfang_09859 51CTO部落格,原文連結:http://blog.51cto.com/hellosa/602696,如需轉載請自行聯系原作者