nginx https 性能測試結果
概述
- 本次測試主要是為了測試nginx 在使用https單向認證的性能瓶頸,通過調整nginx物理機的cpu大小來確定nginx能支持的https連接數量
測試方法
- 采用單機jmeter確定單台客戶端能支持的https連接tps
- 動態調整nginx物理機cpu確定該配置下nginx能支持的https連接tps
- 采用jmeter集群提高客戶端並發能力,確認nginx最大的支持數量
- nginx ssl套件優先選擇ECDHE-RSA-AES256-GCM384
- 切換對稱加密算法 對比不同算法之間的性能優劣
- 切換雙向認證,對比單向與雙向的性能差距
測試結果
- windows客戶端4核16g機器 https連接 tps最高為400左右
- linux客戶端4核8g機器 https連接 tps最高為550左右
- linux客戶端8核8g機器 https連接 tps最高為800左右
- 客戶端https連接性能與內存無關
- nginx 1核2g可支撐tps為470左右
- nginx 2核4g可支撐tps為950左右
- nginx 4核8g可支撐tps為1800左右
- 對稱加密算法對tps有一定影響,aes256-sha384比aes128-sha256有優勢
- 雙向認證對客戶端及服務器均有一定的影響,開啟雙向認證客戶端和服務器tps均下降200左右
- nginx 8核時可提供更高的性能,礙於客戶端機器太少,暫未測試,根據開源測試結果,在cpu不超過24核之前,呈指數增長,超過24核之后,基本無提升,達到10000+tps
使用windows電腦測試 100個線程 循環100次 ramp-up 5s nginx與應用共用一台機器 使用nginx轉發請求
nginx物理機配置 | worker數量 | nginxcpu占用率 | 請求數量 | 平均響應時間 | tps | 結果分析 |
---|---|---|---|---|---|---|
4核8g | 1 | 77% | 10000 | 未記錄 | 366.6 | 客戶端https性能限制,worker限制為1不影響測試結果 |
4核8g | 1 | 82% | 10000 | 未記錄 | 391 | 客戶端https性能限制 |
2核8g | 1 | 未記錄 | 10000 | 167 | 370 | 客戶端https性能限制 |
2核8g | 1 | 未記錄 | 10000 | 166 | 378 | 客戶端https性能限制 |
1核8g | 1 | 未記錄 | 10000 | 177 | 355 | 客戶端https性能限制 |
1核8g | 1 | 未記錄 | 10000 | 158 | 388 | 客戶端https性能限制 |
- 根據以上測試結果,可以發現,當使用單台客戶端機器時,主要瓶頸在客戶端的cpu限制上,調整nginx機器配置對測試結果不產生影響
使用windows電腦測試 200個線程 循環100次 ramp-up 5s nginx直接返回數據
nginx物理機配置 | worker數量 | nginxcpu占用率 | 請求數量 | 平均響應時間 | tps | 結果分析 |
---|---|---|---|---|---|---|
1核4g | auto:1 | 80% | 20000 | 200 | 399 | 客戶端https性能限制 |
2核4g | auto:2 | 44% | 20000 | 208 | 389 | 客戶端https性能限制 |
2核4g | auto:2 | 44% | 20000 | 415 | 390 | 客戶端https性能限制 |
2核8g | auto:2 | 未記錄 | 20000 | 415 | 390 | 客戶端https性能限制 |
4核8g | auto:4 | 未記錄 | 20000 | 196 | 403 | 客戶端https性能限制 |
8核8g | auto:8 | 未記錄 | 20000 | 197 | 404 | 客戶端https性能限制 |
- 根據以上測試結果顯示,應用處理的時間會對平均響應時間和tps有較小的影響,目前瓶頸還在客戶端上
單客戶端能達到tps上限 采用4核8g配置的nginx
機器編號 | 客戶端配置 | tps | 備注 |
---|---|---|---|
88 | 8核8g | 750 | 該機器上還運行了一些其他應用 |
90 | 4核8g | 550 | |
91 | 8核4g | 800 |
- 測試結果顯示,客戶端https性能與內存無關,與cpu有正相關關系,非線性增長
測試物理機cpu對nginx https性能的影響
nginx物理機配置 | worker數量 | nginx cpu占用率 | 客戶端集群數量 | 請求數量 | 平均響應時間 | tps | 結果分析 |
---|---|---|---|---|---|---|---|
1核2g | auto:1 | 99.7 | 2 | 40000 | 657 | 476 | nginx機器cpu瓶頸出現 |
2核4g | auto:2 | 97~99 | 2 | 40000 | 315 | 959 | nginx機器cpu瓶頸出現 |
4核4g | auto:4 | 60 | 2 | 40000 | 191 | 1303 | 客戶端機器cpu瓶頸出現 |
4核4g | auto:4 | 90% | 3 | 60000 | 275 | 1702 | 客戶端瓶頸出現,nginx機器接近極限 |
4核8g | auto:4 | 90% | 3 | 60000 | 326 | 1703 | 客戶端瓶頸出現,nginx機器接近極限 |
4核8g | auto:4 | 94% | 3 | 60000 | 309 | 1753 | 90機器升級至8核8g |
4核8g | auto:4 | 90% | 3 | 60000 | 291 | 1577 | 切換加密算法至ECDHE-RSA-AES128-SHA256,90機器升級至8核8g |
4核8g | auto:4 | 99% | 4 | 80000 | 344 | 1780 | 增加客戶端機器 達到nginx機器瓶頸 |
雙向認證測試
- 單機基准測試
機器編號 | 客戶端配置 | tps | 備注 |
---|---|---|---|
88 | 8核8g | 600 | 該機器上還運行了一些其他應用 |
90 | 8核8g | 580 | |
91 | 8核4g | 580 |
- 雙向認證nginx性能測試
nginx物理機配置 | worker數量 | nginx cpu占用率 | 客戶端集群數量 | 請求數量 | 平均響應時間 | tps | 結果分析 |
---|---|---|---|---|---|---|---|
4核8g | auto:4 | 90 | 3 | 60000 | 319 | 1453 | |
4核8g | auto:4 | 99 | 4 | 80000 | 354 | 1447 |
附錄
-
1核2g nginx tps 510左右 nginx所在機器cpu利用率達到99.7% 2客戶端
HTTP請求 40000 657 6 32093 1527.0895952522726 0.0 476.9854519437157 165.82697352730742 85.24251729072263 356.0 -
2核4g nginx tps 1000+ nginx所在機器 2worker cpu利用率達到97%,短暫沖上99% 2客戶端
HTTP請求 40000 315 5 7319 482.0965055306452 0.0 959.6698735634942 333.63522948105856 171.50350279503851 356.0 -
4核4g nginx tps 1300+ nginx所在機器 2worker cpu 利用率為60%左右 2客戶端
HTTP請求 16402 191 5 3970 282.5101425973831 0.0 1303.5047286020822 453.1715658030676 232.95055208416116 356.0 -
4核4g nginx tps 1700+ nginx所在機器 4worker cpu利用率 90% 3客戶端
HTTP請求 41603 275 6 15148 517.715623068677 0.0 1702.7381001105064 591.9675426165433 304.29792218771746 356.0 -
4核8g nginx nginx所在機器 4worker cpu利用率 90% 3客戶端
HTTP請求 31303 326 6 7255 486.0650435449134 0.0 1703.9355505960482 592.3838437619074 304.51191968659845 356.0tps 1600+ -
4核8g nginx 切換對稱加密算法 ecdhe-rsa-aes128-sha256 cpu利用率 90% 3客戶端
HTTP請求 60000 291 7 7499 494.80794128182254 0.0 1577.079773951899 548.2816401629649 281.841404915232 356.0 -
4核8g nginx 切換90上機器至8核8g cpu利用率94% 算法選擇aes256-sha384
HTTP請求 56403 309 6 7528 592.5250471101348 0.0 1753.4429695029066 609.5954073662449 313.35943693264835 356.0 -
4核8g nginx 開啟雙向認證 90機器8核 cpu利用率90%
HTTP請求 25903 319 8 7694 525.7399447768057 0.0 1453.3467990798406 505.2650981176008 259.72896897618244 356.0
nginx和應用部署在同一台機器上
-
使用4核8g tps 366.6 cpu占用77% 其他的被應用占了 391 82%
-
使用2核8g
HTTP請求 10000 167 10 397 77.17840648620567 0.0 370.9749220952664 135.13051361477963 66.29727611663452 373.0
HTTP請求 10000 166 11 874 81.67810223823763 0.0 378.2577448273253 137.7833386919847 67.59879619472709 373.0 -
使用1核8g
HTTP請求 10000 177 10 408 82.3925800284832 0.0 355.96055956999965 129.66141476524402 63.614045313779236 373.0
HTTP請求 10000 158 10 375 73.55565341909484 0.0 388.6966999650173 141.58580965522603 69.46435165390446 373.0
直接使用nginx返回數據
- 使用1核4g cpu占用率80%
HTTP請求 20000 200 10 449 71.28450955360147 0.0 399.2972368631209 138.81818000319439 71.35878354096789 356.0 - 使用2核4g 自動work_processor=2 45%+44%
HTTP請求 20000 208 9 472 64.15829126706855 0.0 389.7343960091198 135.49359861254555 69.64979928678605 356.0
HTTP請求 20000 415 10 791 107.92393697636085 0.0 390.0840631156014 135.6151625675333 69.7122886231983 356.0 - 使用2核8g 49+46
HTTP請求 20000 415 10 791 107.92393697636085 0.0 390.0840631156014 135.6151625675333 69.7122886231983 356.0 - 使用4核8g 4 worker
HTTP請求 20000 196 10 527 61.96279827759556 0.0 403.92616229753196 140.42745486125136 72.1860231449691 356.0
HTTP請求 20000 428 10 852 110.26393194131975 0.0 380.04028427013264 132.1233800782883 67.91735548968191 356.0 - 使用8核8g
HTTP請求 20000 197 10 435 58.30088281988094 0.0 404.5307443365696 140.63764158576052 72.29406856796116 356.0