Nginx壓測和並發預估


一.Nginx並發預估

預估算法:{(?G)*1024-system}/請求大小

(?G):表示內存大小
1024:表示內存容量標准進制
system:表示系統和服務占用的額外內存和需要預留的內存
請求大小:表示靜態(一般為KB)或動態(一般為MB)的請求大小

16核32G服務器,可以抗住4萬多用於負載均衡的並發,最多可以抗住5-6萬,跑滿文件描述符。

二.壓測工具AB

1.安裝壓力測試工具ab

[root@nginx-lua ~]# yum install httpd-tools -y

2.了解壓測工具使用方式

[root@nginx-lua ~]# ab -n 200 -c 2 http://127.0.0.1/ //-n總的請求次數 //-c並發請求數 //-k是否開啟長連接

3.參數詳解

[root@Nginx-lua conf.d]# ab -n2000 -c2 http://127.0.0.1/index.html ... Server Software: nginx/1.12.2 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: /index.html Document Length: 19 bytes Concurrency Level: 200 # 總花費總時長 Time taken for tests: 1.013 seconds # 總請求數 Complete requests: 2000 # 請求失敗數 Failed requests: 0 Write errors: 0 Total transferred: 510000 bytes HTML transferred: 38000 bytes # 每秒多少請求/s(總請求出/總共完成的時間) Requests per second: 9333.23 [#/sec] (mean) # 客戶端訪問服務端, 單個請求所需花費的時間 Time per request: 101.315 [ms] (mean) # 服務端處理請求的時間 Time per request: 0.507 [ms] (mean, across all concurrent requests) # 判斷網絡傳輸速率, 觀察網絡是否存在瓶頸 Transfer rate: 491.58 [Kbytes/sec] received

三.查看並發連接數和連接狀態

1、查看Web服務器(Nginx Apache)的並發請求數及其TCP連接狀態

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'

返回結果一般如下

LAST_ACK 5 (正在等待處理的請求數) SYN_RECV 30 ESTABLISHED 1597 (正常數據傳輸狀態) FIN_WAIT1 51 FIN_WAIT2 504 TIME_WAIT 1057 (處理完畢,等待超時結束的請求數)

其他參數說明

CLOSED:無連接是活動的或正在進行 LISTEN:服務器在等待進入呼叫 SYN_RECV:一個連接請求已經到達,等待確認 SYN_SENT:應用已經開始,打開一個連接 ESTABLISHED:正常數據傳輸狀態 FIN_WAIT1:應用說它已經完成 FIN_WAIT2:另一邊已同意釋放 ITMED_WAIT:等待所有分組死掉 CLOSING:兩邊同時嘗試關閉 TIME_WAIT:另一邊已初始化一個釋放 LAST_ACK:等待所有分組死掉

2、查看Nginx或apache的運行進程數

ps -ef | grep nginx | wc -l ps -ef | grep httpd | wc -l

3、查看Web服務器進程連接數

netstat -antp | grep 80 | grep ESTABLISHED -c


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM