使用AB對Nginx壓測和并發預!

      網友投稿 897 2025-03-31

      ab命令會創建多個并發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基于URL的。

      # 1.ab每次只能測試一個URL,適合做重復壓力測試 # 2.參數很多,可以支持添加cookie,啟用keeplive # 3.可以將測試結果導入文件 # 4.設置顯示信息的詳細程度

      綜合來說,適合單個URL的測試,可以支持更多方式去測試,比如使用cookie模仿用戶提交表單來測試數據庫,但ab是單線程的,不適合測性能高的服務器

      需要安裝httpd-tools

      使用AB對Nginx壓測和并發預!

      yum -y install httpd-tools

      ab -c 1000 -n 10000 http://192.168.2.38/ # -c指定1000并發,-n指定總10000次,相當于1000個人訪問10次。 # -k 是否開啟長連接 Server Software: nginx/1.8.1 #服務器信息和版本 Server Hostname: 192.168.2.38 #服務器的域名 Server Port: 80 #端口 Document Path: / #訪問的路徑 Document Length: 612 bytes #文檔的大小為 612 bytes(此為http響應的正文長度) Concurrency Level: 1000 #并發請求數 Time taken for tests: 0.287 seconds #整個測試持續的時間,默認秒 Complete requests: 1000 #完成的請求數 Failed requests: 0 #失敗的請求書 Write errors: 0 #網絡連接寫入錯誤數 Total transferred: 844000 bytes #傳輸的總數據量 HTML transferred: 612000 bytes #傳輸的HTML內容傳輸量 Requests per second: 3485.11 [#/sec] (mean) #平均每秒請求數 Time per request: 286.935 [ms] (mean) #所有用戶都請求一次的平均時間 Time per request: 0.287 [ms] (mean, across all concurrent requests) #單個用戶請求一次的時間 Transfer rate: 2872.49 [Kbytes/sec] received #傳輸速率 Connection Times (ms) min mean[+/-sd] median max Connect: 0 84 4.1 84 94 Processing: 86 99 6.6 100 109 Waiting: 0 83 16.2 84 108 Total: 95 183 7.4 182 195 #所有服務請求的百分比占用時間,這里50%的請求用時182ms,一般看90%的部分 Percentage of the requests served within a certain time (ms) 50% 182 66% 188 75% 191 80% 192 90% 193 95% 194 98% 194 99% 194 100% 195 (longest request)

      接下來是每秒訪問,因為ab不支持每秒訪問多少,所以寫一個腳本

      #!/bin/bash #當下是運行60秒,每秒1000并發,可以觀察服務器負載 for i in `seq 1 60` do ab -c 1000 -n 1000 http://192.168.2.38/ & sleep 1 done

      1.使用cookie來模擬多個用戶訪問

      先用賬戶和密碼登錄后,用開發者工具找到標識這個會話的Cookie值(Session ID)記下來

      # 一個 ab -n 100 -C key=value http://test.com/ # 多個賬號 ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/

      具體參數

      -n 即requests,用于指定壓力測試總共的執行次數。 -c 即concurrency,用于指定壓力測試的并發數。 -t 即timelimit,等待響應的最大時間(單位:秒)。 -b 即windowsize,TCP發送/接收的緩沖大小(單位:字節)。 -p 即postfile,發送POST請求時需要上傳的文件,此外還必須設置-T參數。 -u 即putfile,發送PUT請求時需要上傳的文件,此外還必須設置-T參數。 -T 即content-type,用于設置Content-Type請求頭信息,例如:application/x-www-form -urlencoded,默認值為text/plain。 -v 即verbosity,指定打印幫助信息的冗余級別。 -w 以HTML表格形式打印結果。 -i 使用HEAD請求代替GET請求。 -x 插入字符串作為table標簽的屬性。 -y 插入字符串作為tr標簽的屬性。 -z 插入字符串作為td標簽的屬性。 -C 添加cookie信息,例如:"Apache=1234"(可以重復該參數選項以添加多個)。 -H 添加任意的請求頭,例如:"Accept-Encoding: gzip",請求頭將會添加在現有的多個請求頭之后(可以重復該參數選項以添加多個)。 -A 添加一個基本的網絡認證信息,用戶名和密碼之間用英文冒號隔開。 -P 添加一個基本的代理認證信息,用戶名和密碼之間用英文冒號隔開。 -X 指定使用的代理服務器和端口號,例如:"126.10.10.3:88"。 -V 打印版本號并退出。 -k 使用HTTP的KeepAlive特性。 -k 使用HTTP的KeepAlive特性。 -d 不顯示百分比。 -S 不顯示預估和警告信息。 -g 輸出結果信息到gnuplot格式的文件中。 -e 輸出結果信息到CSV格式的文件中。 -r 指定接收到錯誤信息時不退出程序。 -h 顯示用法信息,其實就是ab -help。

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

      #(?G):表示內存大小 # 1024:表示內存容量標準進制 # system:表示系統和服務占用的額外內存和需要預留的內存 # 請求大?。罕硎眷o態(一般為KB)或動態(一般為MB)的請求大小 # 16核32G服務器,可以抗住4萬多用于負載均衡的并發,最多可以抗住5-6萬

      ab -n2000 -c2 http://127.0.0.1/index.html # -n 總的請求次數 # -c 并發請求數 # -k 是否開啟長連接 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

      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:等待所有分組死掉

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

      netstat -antp | grep 80 | grep ESTABLISHED -c

      Nginx 自動化測試

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:優秀項目經理必會的一大絕技——甘特圖!教你 5分鐘搞定一張產品研發排期表(免費領6套甘特圖模版)
      下一篇:如何刪除空白檔(如何去掉空白段落)
      相關文章
      亚洲国产成人久久一区久久| 在线观看亚洲电影| 国产成人精品久久亚洲| 亚洲AV成人片无码网站| 亚洲中文无码a∨在线观看| 亚洲精品视频观看| 亚洲第一二三四区| 亚洲黄色一级毛片| 亚洲精品免费在线视频| 亚洲色图黄色小说| 亚洲成人福利网站| 亚洲国产精品久久久久秋霞影院| 亚洲激情视频网站| 亚洲国产精品一区二区久| 亚洲黄色在线观看网站| 亚洲成人网在线观看| 亚洲人成7777| 亚洲色www永久网站| 亚洲成AV人影片在线观看| 亚洲av无码一区二区三区天堂| 亚洲av无码一区二区三区天堂| 国产亚洲欧美在线观看| 婷婷亚洲天堂影院| 亚洲人成人网站在线观看| 亚洲男人在线无码视频| 永久亚洲成a人片777777| 亚洲精品二区国产综合野狼| 亚洲电影国产一区| 亚洲精品资源在线| 在线观看亚洲AV每日更新无码| 亚洲人成色777777老人头| 亚洲AV成人片无码网站| 亚洲情侣偷拍精品| 国产亚洲人成网站观看| 91亚洲国产成人久久精品网站 | 337P日本欧洲亚洲大胆艺术图| 亚洲AV无码乱码在线观看牲色| 久久久久亚洲精品无码网址| 亚洲成A∨人片在线观看不卡| 亚洲一区二区中文| 亚洲国产精品综合久久20|