nginx https性能测试结果

nginx https 性能测试结果

概述

  • 本次测试主要是为了测试nginx 在使用https单向认证的性能瓶颈,通过调整nginx物理机的cpu大小来确定nginx能支持的https连接数量

测试方法

  • 采用单机jmeter确定单台客户端能支持的https连接tps
  • 动态调整nginx物理机cpu确定该配置下nginx能支持的https连接tps
  • 采用jmeter集群提高客户端并发能力,确认nginx最大的支持数量
  • nginx ssl套件优先选择ECDHE-RSA-AES256-GCM384
  • 切换对称加密算法 对比不同算法之间的性能优劣
  • 切换双向认证,对比单向与双向的性能差距

测试结果

  1. windows客户端4核16g机器 https连接 tps最高为400左右
  2. linux客户端4核8g机器 https连接 tps最高为550左右
  3. linux客户端8核8g机器 https连接 tps最高为800左右
  4. 客户端https连接性能与内存无关
  5. nginx 1核2g可支撑tps为470左右
  6. nginx 2核4g可支撑tps为950左右
  7. nginx 4核8g可支撑tps为1800左右
  8. 对称加密算法对tps有一定影响,aes256-sha384比aes128-sha256有优势
  9. 双向认证对客户端及服务器均有一定的影响,开启双向认证客户端和服务器tps均下降200左右
  10. 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. 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. 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

  3. 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. 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

  5. 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+

  6. 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

  7. 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

  8. 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和应用部署在同一台机器上

  1. 使用4核8g tps 366.6 cpu占用77% 其他的被应用占了 391 82%

  2. 使用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

  3. 使用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. 使用1核4g cpu占用率80%
    HTTP请求 20000 200 10 449 71.28450955360147 0.0 399.2972368631209 138.81818000319439 71.35878354096789 356.0
  2. 使用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
  3. 使用2核8g 49+46
    HTTP请求 20000 415 10 791 107.92393697636085 0.0 390.0840631156014 135.6151625675333 69.7122886231983 356.0
  4. 使用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
  5. 使用8核8g
    HTTP请求 20000 197 10 435 58.30088281988094 0.0 404.5307443365696 140.63764158576052 72.29406856796116 356.0

你可能感兴趣的:(nginx https性能测试结果)