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