Nginx的Fastcgi_cache性能 – 磁盘cachingVS tmpfscachingVS静态文件

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

反正我比较不同情况下的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小实例。 所有testing使用SIEGE 40并发请求2分钟。 所有的testing都是从localhost> localhost完成的。

场景一 – 通过fastcgi_cachecaching到TMPFS(MEMORY)的url
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 

scheme二 – 通过fastcgi_cache将相同的urlcaching到磁盘(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 

这里是第一个问题popup的地方。我没有看到磁盘上的RAM的巨大差异。 这是正常的吗? 我的意思是,使用ramcaching没有太大的好处。

scheme三 – 同一页面,保存为.html和nginx的服务器

 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从caching服务应该是一样快服务一个静态的.html文件,对不对? 我的意思是 – nginx看到有一个caching规则的位置,并看到有一个caching版本,服务它。 为什么这么差?

caching工作正常

  35449 - 10835 HIT 1156 MISS 1074 BYPASS 100 EXPIRED 

最好的祝福。

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

首先,报道的数字非常低。 他们应该更大,回答原来的问题(“为什么差异”)没有任何意义。 正确的问题是“为什么这么慢”。 即使是一个小型的ec2应该会做得更好。

在调查过程中发现主机CPU限制,gzip过滤器和pagespeed模块是最饿的CPU。

基本建议是:

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

随着gzip off; pagespeed off; gzip off; pagespeed off; 报道了30倍的加速。