2013-10-03 84 views
5

两个警告:这种性能的事情是上瘾的。你挤的每一点,你想要更多。 英语是我的第二语言,所以请原谅我的任何错误。Nginx的Fastcgi_cache性能 - 磁盘缓存VS tmpfs缓存VS静态文件

反正我比较不同情况下的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'

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 - 相同的URL经由fastcgi_cache到磁盘高速缓存的(EC2 oninstance存储 - 临时)

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的

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和服务器这是最主要的问题。这是一个巨大的差异。我的意思是,从缓存服务的AFAIK应该和提供静态.html文件一样快,对吗?我的意思是--nginx看到有一个位置缓存规则,并且看到有一个缓存版本,将其提供。为什么这么差?

缓存工作正常

35449 - 
    10835 HIT 
    1156 MISS 
    1074 BYPASS 
    100 EXPIRED 

最好的问候。

回答

7

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

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

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

基本建议是:

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

With gzip off; pagespeed off;报告了30倍加速。

+0

Maxim帮助我在nginx邮件列表中对此进行了排序。事实证明,我的gzip正在吃掉所有的cpu。他用gzip_static指出了正确的方向。所以如果你想让很多sim用户不使用高gzip压缩级别,那么记住男孩,除非你有cpu空闲。节省是不值得的。如果你使用gzip并使用gzip静态注意文件时间戳gzip而不是gzip必须使用相同的时间戳,这是最好的方法。 – ddutra

+1

@ddutra在遵循这些建议之后,您的测试结果如何?他们怀有重要的结果吗? – Zhianc

+0

@ddutra任何信息将帮助我 –