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

ddu*_*tra 5 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 
Run Code Online (Sandbox Code Playgroud)

这是一个ec2小实例.使用SIEGE 40并发请求完成所有测试2分钟.所有测试都是从localhost> 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
Run Code Online (Sandbox Code Playgroud)

场景二 - 通过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
Run Code Online (Sandbox Code Playgroud)

这是第一个问题出现的地方.我没有看到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
Run Code Online (Sandbox Code Playgroud)

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

缓存工作正常

    35449 -
  10835 HIT
   1156 MISS
   1074 BYPASS
    100 EXPIRED
Run Code Online (Sandbox Code Playgroud)

最好的祝福.

Max*_*nin 7

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

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

在调查期间,发现主机是CPU绑定的,gzip过滤器和pagespeed模块最耗费CPU.

基本建议是:

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

随着gzip off; pagespeed off;报道30倍的速度提升.