計算網站併發數

 
Request Per Second + Simultaneous Browser connections + Thinking Time = Concurrent User 
其中
Concurrent User  表示網站併發用戶數
Request Per Second [RPS] 表示每秒請求數(輸送量)
Simultaneous Browser connections [SBC] 表示併發連接數
Thinking Time  表示平均用戶思考時間

然來一直以為網站併發用戶數就是指的併發連接數 還是概念的東西沒搞清楚
特作記錄 以後做性能分析指標報告用的著
[root@]#  netstat -na | grep 80 | awk '{print $6}' | sort | uniq -c | sort -rn
  17175 ESTABLISHED
  14537 FIN_WAIT1
   2917 TIME_WAIT
    603 FIN_WAIT2
    501 SYN_RECV
     76 LAST_ACK
      8 CLOSING
      1 LISTEN

如發現系統存在大量TIME_WAIT狀態的連接,通過調整內核參數解決,

vim /etc/sysctl.conf
編輯檔,加入以下內容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然後執行 /sbin/sysctl -p 讓參數生效。

net.ipv4.tcp_syncookies = 1 
表示開啟SYN Cookies。當出現SYN等待佇列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉

net.ipv4.tcp_tw_reuse = 1 
表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉

net.ipv4.tcp_tw_recycle = 1 
表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。

net.ipv4.tcp_fin_timeout 修改系統默認的 TIMEOUT 時間
下面附上TIME_WAIT狀態的意義:
用戶端與伺服器端建立TCP/IP連接後關閉SOCKET後,伺服器端連接的埠
狀態為TIME_WAIT是不是所有執行主動關閉的socket都會進入TIME_WAIT狀態呢?
有沒有什麼情況使主動關閉的socket直接進入CLOSED狀態呢?
主動關閉的一方在發送最後一個 ack 後就會進入 TIME_WAIT 狀態 停留2MSL(max segment lifetime)時間這個是TCP/IP必不可少的,也就是“解決”不了的。
也就是TCP/IP設計者本來是這麼設計的

主要有兩個原因
1。防止上一次連接中的包,迷路後重新出現,影響新連接
(經過2MSL,上一次連接中所有的重複包都會消失)
2。可靠的關閉TCP連接
在主動關閉方發送的最後一個 ack(fin) ,有可能丟失,這時被動方會重新發
fin, 如果這時主動方處於 CLOSED 狀態 ,就會回應 rst 而不是 ack。所以
主動方要處於 TIME_WAIT 狀態,而不能是 CLOSED 。
TIME_WAIT 並不會佔用很大資源的,除非受到攻擊。
還有,如果一方 send 或 recv 超時,就會直接進入 CLOSED 狀態

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料