两个警告:提高性能是一种瘾头,你挤出的每一点都会让你想要更多。英语是我的第二语言,如有任何错误请谅解。
无论如何,我正在比较不同情况下使用nginx对WordPress网站的性能表现,并发现了一些奇怪的问题。所以我来这里与大家分享,也许可以调整我的期望值。
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进行。 场景一 - URL通过fastcgi_cache缓存到TMPFS(内存)中
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缓存到磁盘上的相同URL(使用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
这里出现了第一个问题。我没有看到RAM和磁盘之间有很大的差异。这正常吗?我的意思是,使用RAM缓存没有太大的好处。
第三种情况 - 相同的页面,保存为.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
这是一个主要的问题。这里有一个很大的区别。我的意思是,据我所知,从缓存中提供服务应该和提供静态的 .html 文件一样快,对吧?我的意思是- nginx 看到了位置的缓存规则并看到了已缓存的版本,就会提供它。为什么会有这样大的差异呢?
缓存工作正常
35449 -
10835 HIT
1156 MISS
1074 BYPASS
100 EXPIRED
最好的问候。