Nginx Fastcgi_cache性能 - 磁盘缓存VS tmpfs缓存VS静态文件

时间:2013-10-03 13:38:58

标签: wordpress performance caching nginx amazon-ec2

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

无论如何我在不同的场景中比较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>完成的。本地主机。

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

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缓存到磁盘的相同网址(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到磁盘的巨大差异。这是正常的吗?我的意思是,使用ram缓存没什么好处。

场景三 - 同一页面,由nginx保存为.html和服务器

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

最好的问候。

1 个答案:

答案 0 :(得分:7)

以下是nginx邮件列表中调查的简短摘要(请参阅the thread here):

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

在调查过程中发现主机受CPU限制,gzip过滤器和pagespeed模块最耗费CPU。

基本建议是:

  1. gzip_static用于静态文件。它允许提供预压缩版本并在运行时节省CPU。
  2. 避免使用高gzip压缩级别(gzip_comp_level)。高压缩级别需要比默认值(1)多得多的CPU,而尺寸差异很小。
  3. 尝试关闭pagespeed以查看它是否有帮助。
  4. 报告了gzip off; pagespeed off; 30倍加速。