linux上面nginx服務併發處理數的計算方法

2021-05-24 15:43:02 字數 1886 閱讀 9866

方法1:利用網路處理量計算

併發= connection established / min(server keepalive, server timeout)

併發= 伺服器傳輸鏈結數 除以 伺服器軟體的keepalive設定和伺服器軟體的超時設定之間的最小值

這個公式算出來的數字是keepalive時間段內的平均值,比真實平均值要小一點,如果想找最大值就要設定keepalive為0或1,然後多探測幾次。

connection established是伺服器當前正在傳輸的鏈結,但是keepalive開啟時,新建立的傳輸鏈結會一直存在直到keepalive/timeout關閉鏈結;客戶端主動關閉鏈結的話connection established也會關閉,不過這種鏈結一般比較少,多數瀏覽器都是支援keepalive並遵守伺服器配置的。

在linux檢視connection established數字的辦法是在命令列執行:

netstat -est|grep "connections established"|cut -d "c" -f 1

keepalive和timeout數字檢視辦法要檢視web server軟體的配置檔案

注意:這個方法只能用於最前端的伺服器或7層交換機,前端之後的伺服器因為快取或鏈結方式的原因往往是不準確的。

方法2:利用access.log日誌計算

因為每處理乙個請求,都會在日誌裡留下一條資訊,所以利用伺服器軟體的日誌來計算是最準確的,但是是這種計算方式浮動也可能會比較大,需要取最大值計算。

首先在確定伺服器軟體有將所有請求寫入乙個日誌檔案裡,並確保該日誌檔案正在不停記錄。

為節省時間和伺服器資源,把log檔案的最後一萬條記錄拿出來統計,用nginx預設combined格式作個例子:

執行命令:

tail -10000 access.log | awk '' | sort | uniq -c

命令的意思是取log檔案的最後一萬條記錄,然後用awk取得日誌檔案中表示時間的一列($4),接著再對該列進行一次排序,最後是用uniq把這一列相鄰的重複行合併,並計算合併的條數。

其中先sort再uniq是一種安全的做法,以確保同一秒的日誌先被歸到一起,然後再合併,這樣就不會有同一秒種的日誌會被切成幾段這樣的現象。

可以得到輸出:

23 [09/sep/2008:20:26:02

26 [09/sep/2008:20:26:03

17 [09/sep/2008:20:26:04

20 [09/sep/2008:20:26:05

...70 [09/sep/2008:20:29:43

61 [09/sep/2008:20:29:44

45 [09/sep/2008:20:29:45

37 [09/sep/2008:20:29:46

2  [09/sep/2008:20:29:47

在這些輸出中,第一條記錄和最後一條記錄因為時間有可能被切斷,所以是完全不可靠之資訊,可以忽略。

如果輸出少於10行的話,要擴大一下範圍,修改tail -10000為tail -100000取最後十萬條資料統計。

如果只需要看最大值,可以再用sort命令進行排序,並用head命令取出前10行記錄:

tail -10000 access.log | awk '' | sort | uniq -c | sort -nr | head –n 10

awk命令是乙個功能比較強的命令,在這裡只用到最簡單的awk '',意思是將日誌每行按空格切分開,然後切出來的結果依次從左到右就是$1 $2 $3 ...,nginx預設的main日誌時間字段剛好是$4,所以在這裡拿$4來計算。

為了輸出更好看可以用下面的命令:

tail -10000 access.log | awk ''| cut -d"/" -f 3 | sort | uniq -c |head -n 10

Linux 下 Nginx新增至服務並設定開機啟動

centos6.5 centos7也可以 nginx版本 1.14.0 nginx安裝路徑 usr local nginx vim ngin.sh 指令碼如下 純手敲,可能有誤 bin bash chkconfig 2345 30 30 if 1 start then if f usr local ...

linux安裝nginx服務

快速安裝 新增centos 7 nginx yum 資源庫 sudo rpm uvh使用yum命令從nginx源伺服器中獲取來安裝nginx sudo yum install y nginx檢測nginx是否安裝成功 同時也可以用於檢測配置檔案是否正確 nginx t etc nginx nginx...

linux停止nginx服務

在上線新功能的時候,需要將伺服器停掉,防止在更新過程中有使用者進行操作額外的資料。1 檢視nginx主程序 1 是主程序,2,3,4都是子程序。這裡root 後面的數字表示 主程序號 nginx後面的數字表示 子程序號 然後停止nginx服務的時候 第一 systemctl stop nginx發現...