歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

apache鏈接狀態查看和相關數值


netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
FIN_WAIT_1 286
FIN_WAIT_2 960
SYN_SENT 3
LAST_ACK 32
CLOSING 1
CLOSED 36
SYN_RCVD 144
TIME_WAIT 2520
ESTABLISHED 352
  www.2cto.com  
返回參數的說明如下:
        CLOSED:無連接是活動的或正在進行
  LISTEN:服務器在等待進入呼叫
  SYN_RECV:一個連接請求已經到達,等待確認
  SYN_SENT:應用已經開始,打開一個連接
  ESTABLISHED:正常數據傳輸狀態
  FIN_WAIT1:應用說它已經完成
  FIN_WAIT2:另一邊已同意釋放
  TIME_WAIT:等待所有分組死掉
  CLOSING:兩邊同時嘗試關閉
  TIME_WAIT:另一邊已初始化一個釋放
  LAST_ACK:等待所有分組死掉   TCP變遷圖:   pache服務器的fin_wait1過多time_wait過多問題解決
1、fin_wait1狀態過多。fin_wait1狀態是在server端主動要求關閉tcp連接,並且主動發送fin以後,等待client端回復ack時候的狀態。fin_wait1的產生原因有很多,需要結合netstat的狀態來分析。
  netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n   上面的命令可以幫助分析哪種tcp狀態數量異常   netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n 則可以幫助你將請求80服務的client ip按照連接數排序。   2、time_wait狀態過多。   www.2cto.com       通常表現為apache服務器負載高,w命令顯示load average可能上百,但是web服務基本沒有問題。同時ssh能夠登陸,但是反應非常遲鈍。   原因:最可能的原因是httpd.conf裡面keepalive沒有開,導致每次請求都要建立新的tcp連接,請求完成以後關閉,增加了很多time_wait的狀態。另,keepalive可能會增加一部分內存的開銷,但是問題不大。   分析:如果發現fin_wait1狀態很多,並且client ip分布正常,那可能是有人用肉雞進行ddos攻擊、又或者最近的程序改動引起了問題。一般說來後者可能性更大,應該主動聯系程序員解決。 但是如果有某個ip連接數非常多,就值得注意了,可以考慮用iptables直接封了他。
  查IP的關於80端口的連接數可以用: netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n 可以看到目前IP的連接數。太多的,就要注意了。 此外再分享一個實時查看apache並發數的: watch -n 1 -d "pgrep httpd|wc -l",冒號裡的語句可以自己調啦~
 
Copyright © Linux教程網 All Rights Reserved