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

标签 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 > localhost 完成。

场景一 - 通过 fastcgi_cache 缓存到 TMPFS (MEMORY) 的 URL
围攻 -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

场景二 - 相同的 URL 通过 fastcgi_cache 缓存到磁盘(ec2 实例存储 - 短暂)

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

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

场景三 - 同一页面,由 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

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

缓存工作正常

    35449 -
  10835 HIT
   1156 MISS
   1074 BYPASS
    100 EXPIRED

致以诚挚的问候。

最佳答案

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

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

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

基本建议是:

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

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

关于wordpress - Nginx Fastcgi_cache性能——磁盘缓存VS tmpfs缓存VS静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19160737/

相关文章:

html - 增加菜单上方的填充

c# - 性能:在 VS 中编译,在 Windows 和 Linux 上以 Mono 运行

java - 如何在达到限制时通过删除最旧的条目来限制 map 的最大大小

php - 在 Woocommerce 中将我的帐户编辑帐户字段设置为只读

php - 当我在 wordpress 菜单中使用类别时,在 index.php 上设置当前页面?

wordpress 在搜索页面上按帖子类型分组

用 C 编写的程序可以比用 OCaml 编写并翻译成 C 的程序更快吗?

algorithm - 加速此功能的可能性是什么?

PHP PDO 缓存

asp.net - 过期输出缓存 ASP.Net MVC