2013-10-03 121 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任何信息將幫助我 –