5

两个警告:这种表演令人上瘾。你挤压的每一点,你都想要更多。英语是我的第二语言,所以请原谅我的任何错误。

无论如何,我正在比较不同场景下 wordpress 网站的 nginx 性能,有些东西似乎很奇怪。所以我在这里与你们分享,也许调整我​​的期望。

Software                                                                            
#       NGINX 1.4.2-1~dotdeb.1                                                          
#       PHP5-CGI 5.4.20-1~dotdeb.1                                                      
#       PHP-FPM 5.4.20-1~dotdeb.1                                                       
#       MYSQL Server 5.5.31+dfsg-0+wheezy1                                              
#       MYSQL Tuner 1.2.0-1                                                             
#       APC opcode 3.1.13-1 

这是一个 ec2 小实例。所有测试使用 SIEGE 40 个并发请求完成 2 分钟。从 localhost > localhost 完成的所有测试。

场景一 - 通过 fastcgi_cache 缓存到 TMPFS (MEMORY)
SIEGE -c 40 -b -t120s ' http://www.joaodedeus.com.br/quero-visitar/abadiania-go的url

Transactions:                    1403 hits
Availability:                 100.00 %
Elapsed time:                 119.46 secs
Data transferred:              14.80 MB
Response time:                  3.36 secs
Transaction rate:              11.74 trans/sec
Throughput:                     0.12 MB/sec
Concurrency:                   39.42
Successful transactions:        1403
Failed transactions:               0
Longest transaction:            4.43
Shortest transaction:           1.38

场景二 - 通过 fastcgi_cache 缓存到磁盘的相同 url (ec2 oninstance storage - ephemeral)

Transactions:                    1407 hits
Availability:                 100.00 %
Elapsed time:                 119.13 secs
Data transferred:              14.84 MB
Response time:                  3.33 secs
Transaction rate:              11.81 trans/sec
Throughput:                     0.12 MB/sec
Concurrency:                   39.34
Successful transactions:        1407
Failed transactions:               0
Longest transaction:            4.40
Shortest transaction:           0.88

这是第一个问题出现的地方。我没有看到内存到磁盘的巨大差异。这正常吗?我的意思是,使用 ram 缓存没有太大的好处。

场景三——同一个页面,通过nginx保存为.html和server

Transactions:                    1799 hits
Availability:                 100.00 %
Elapsed time:                 120.00 secs
Data transferred:              25.33 MB
Response time:                  2.65 secs
Transaction rate:              14.99 trans/sec
Throughput:                     0.21 MB/sec
Concurrency:                   39.66
Successful transactions:        1799
Failed transactions:               0
Longest transaction:            5.21
Shortest transaction:           1.30

这是主要问题。这是一个巨大的差异。我的意思是,从缓存中提供服务的 AFAIK 应该与提供静态 .html 文件一样快,对吧?我的意思是 - nginx 看到有一个位置缓存规则,并看到有一个缓存版本,提供它。为什么差别这么大?

缓存工作正常

    35449 -
  10835 HIT
   1156 MISS
   1074 BYPASS
    100 EXPIRED

最好的祝福。

4

1 回答 1

8

以下是 nginx 邮件列表中调查的简短摘要(请参阅此处的线程):

首先,报告的数字非常低。它们应该更大,并且回答原始问题(“为什么不同”)并没有真正意义。正确的问题是“为什么这么慢”。即使是 ec2 小实例也应该做得更好。

在调查期间,发现主机受 CPU 限制,其中 gzip 过滤器和 pagespeed 模块最占用 CPU。

基本建议是:

  1. 对静态文件使用gzip_static。它允许提供预压缩版本并在运行时节省 CPU。
  2. 避免使用高 gzip 压缩级别 ( gzip_comp_level )。高压缩级别需要比默认 (1) 更多的 CPU,而大小差异很小。
  3. 尝试关闭 pagespeed 以查看是否有帮助。

gzip off; pagespeed off;报道,速度提高了 30 倍。

于 2013-10-04T18:14:59.433 回答