性能:Nginx SSL 速度慢还是总体而言 SSL 速度慢?

性能:Nginx SSL 速度慢还是总体而言 SSL 速度慢?

我有一个 Amazon Web Services 设置,其中 Apache 实例位于 Nginx 后面,Nginx 处理 SSL 并提供除 .php 页面之外的所有内容。在我的 ApacheBench 测试中,我看到最昂贵的 API 调用(通过 Memcached 缓存)出现以下情况:

100 concurrent calls to API call (http): 115ms (median) 260ms (max)
100 concurrent calls to API call (https): 6.1s (median) 11.9s (max)

我做了一些研究,禁用了最昂贵的 SSL 密码并启用了 SSL 缓存(我知道这对这个特定的测试没有帮助)。你能告诉我为什么我的 SSL 花了这么长时间吗?我已经设置了一个拥有 8 个 CPU 的大型 EC2 服务器,即使对其施加持续负载也只会使其总 CPU 达到 50%。我设置了 8 个 Nginx 工作程序和一堆 Apache。目前整个设置都在一个 EC2 盒子上,但我计划将其拆分并对其进行负载平衡。关于这个主题有几个问题,但都没有答案(禁用昂贵的密码,缓存 SSL,似乎什么也没做。)示例结果如下:

$ ab -k -n 100 -c 100 https://URL 
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking URL.com (be patient).....done


Server Software:        nginx/1.0.15
Server Hostname:        URL.com
Server Port:            443
SSL/TLS Protocol:       TLSv1/SSLv3,AES256-SHA,2048,256

Document Path:          /PATH
Document Length:        73142 bytes

Concurrency Level:      100
Time taken for tests:   12.204 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Keep-Alive requests:    0
Total transferred:      7351097 bytes
HTML transferred:       7314200 bytes
Requests per second:    8.19 [#/sec] (mean)
Time per request:       12203.589 [ms] (mean)
Time per request:       122.036 [ms] (mean, across all concurrent requests)
Transfer rate:          588.25 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       65  168  64.1    162     268
Processing:   385 6096 3438.6   6199   11928
Waiting:      379 6091 3438.5   6194   11923
Total:        449 6264 3476.4   6323   12196

Percentage of the requests served within a certain time (ms)
  50%   6323
  66%   8244
  75%   9321
  80%   9919
  90%  11119
  95%  11720
  98%  12076
  99%  12196
 100%  12196 (longest request)

答案1

问题最终是因为我早期设置了 Nginx 速率限制,这影响了我的负载测试。我知道这很愚蠢。在速率限制期间,有一件有趣的事情是,Nginx 不会立即收到超过突发阈值的 503 错误,而只是延迟响应。只有当队列中的请求过多时,它才会发送 503。

相关内容