程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> Varnish 和 Squid比較到底強多少

Varnish 和 Squid比較到底強多少

編輯:PHP基礎知識
 

對於坊間流傳的:
1.varnish的性能比squid高10~20倍
2.squid 3.0的性能比2.6有提高
本次測試將會揭示結果,
是否varnish的架構真的能提升那麼多的性能
是否squid的新版本在性能上有所提升
測試中將不對平台.軟件.等等進行優化
由於優化水平的關系將極大的影響結果.
此次測試中的數據可以作為基准數據.
可以由其中個別軟件的優化與非優化結果比例系數
自行計算得出比較結果.所以個別軟件的優化或者系統優化後對整體的影響
可以由讀者自行對特定軟件進行,並使用此基准數據進行推算.
WEB站點的頁面
我將淘寶的首頁獲取到本地
作為測試對象
測試頁面下載
index_files

平台:
PROXY:
CentOS 5.1 最小化安裝
浪潮NF190
Xeon 2.8
1G RAM
73G SCSI
Squid 2.6,Squid 3.0,Varnish 1.1.2

WEB:
CentOS 5.1 最小化安裝
浪潮NF180
Xeon 2.8
1G RAM
73G SCSI
Nginx 0.6.31

CLIENT:
CentOS 5.1 最小化安裝
浪潮NF260
Xeon 2.4
512M RAM
36G SCSI
http_load-12mar2006

SWITCH:
DLINK DES 1024R+

1.Squid 2.6
編譯參數

./configure --prefix=/usr/local/squid26

配置文件

visible_hostname test2.hiadmin.com
http_port 80 accel vhost vport
cache_peer 192.168.210.111 parent 80 0 no-query originserver name=test1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_log /var/log/squid26/cache.log

2.Squid 3.0
編譯參數

./configure --prefix=/usr/local/squid30

配置文件

visible_hostname test2.hiadmin.com
http_port 80 accel vhost vport
cache_peer 192.168.210.111 parent 80 0 no-query originserver name=test1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_log /var/log/squid30/cache.log

3.Varnish 1.1.2
編譯參數

./configure --prefix=/usr/local/varnish

配置文件

backend default {
   set backend.host = "192.168.210.111";
   set backend.port = "80";
}

運行參數

varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:80

4.Nginx 0.6.31
編譯參數

./configure --prefix=/usr/local/nginx

配置文件

worker_processes 10;
events {
   worker_connections 1024;
}
http {
   include mime.types;
   default_type application/octet-stream;
   sendfile on;
   keepalive_timeout 65;
   server {
   listen 80;
   server_name localhost;
   location / {
   root html;
   index index.html index.htm;
   }
   error_page 500 502 503 504 /50x.html;
   location = /50x.html {
   root html;
   }
   }
}

5.http_load
運行參數

./http_load -parallel 1000 -seconds 10 urls.txt
urls.txt
http://192.168.210.222/index.html

6.squid 2.7
編譯參數

./configure --prefix=/usr/local/squid27

配置文件

visible_hostname test2.hiadmin.com
http_port 80 accel vhost vport
cache_peer 192.168.210.111 parent 80 0 no-query originserver name=test1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_log /var/log/squid27/cache.log

測試結果

點圖放大
圖標中標注淺黃色的為客戶端在抓取過程中只出現一次或幾次的500
橙色的為出現500抓取錯誤的頻率較多
紅色的為幾乎每次都會出現500抓取錯誤
值得注意的是squid 3.0
在500並發連接數時500出現的次數很多
但是在1000的時候反而抓取失敗率下降了.

CPU和內存占用率

點圖放大
varnish一直保持良好的CPU和內存使用率
但是到了1000並發數的時候
你會發現CPU使用率到了103%
沒錯.我並沒有打錯.在5次測試中,VARNISH的1000並發數測試其CPU占用率一直徘徊在101~103之間
可能是varnish的連接池寫的不是特別好.當大於varnish處理量時,會使用更多的CPU資源去處理
squid 3.0似乎是個CPU和內存的占用大戶
可能和版本比較新以及特性比較多有關(雖然這次什麼特性都沒用上)
squid 2.6保持了良好的姿態,穩定的CPU占用率和內存占用率.表明了為何市面上使用最多是它的原因.

更詳細的內容可以下載此表格
varnish-vs-squid3

雖然varnish有著令人吃驚的CPU占用率(超過處理能力時也很令人吃驚)
但是其處理超大量的鏈接時內存和CPU使用率的暴漲並不令人滿意
不過其表現出的在最大負荷時的fetchs/second
確實比squid 2.6要高出大約8%
實驗表明.在需要更加穩定的生產環境中,varnish還不能替代老一代的squid 2.6
但是其對squid 3.0已經產生了很明顯的挑戰.
如果squid 3.0不能比他的上代產品提供更好的性能和穩定性的話
很有可能最佳反向代理的寶座會被varnish奪走
不論如何
這次測試的主題.varnish比squid有著10倍或者20倍的性能
被證實是不可能實現的.
雖然測試數據量充滿100M帶寬可能影響到測試的准確度.
但是更高的帶寬所帶來的同時連接數,很可能會撐爆varnish主機的CPU和內存.

結論
1.varnish在高負載下以CPU和內存為代價,比squid 2.6提高8%,但是絕非10倍~20倍.
2.squid 3.0的性能比2.6更低.而非更高.相反,3.0是最不穩定以及性能最差的.
3.squid 2.7的性能比2.6低,但是CPU和內存占用率控制的更好.

 

======================================================

Squid 2.6 2.7 3.0 3.1 以及 varnish 2.1.5 性能對比測試

http://www.cnblogs.com/littlehb/archive/2012/02/21/2360787.html

 

說明:

 

使用壓力測試軟件siege,http_load對這幾個代理軟件進行測試,測試了不同大小的文件和各種並發數。

 

squid的版本選擇,考慮到實際使用的一些需求,並參考了其他的一些文章(

比如:http://www.php-oa.com/2009/12/02/cache%e8%bd%af%e4%bb%b6%e7%89%88%e6%9c%ac%e9%80%89%e6%8b%a9.html

),沒有選擇比較老的squid 2.5。

 

每次測試前清除文件緩存並重啟代理軟件。

 

這個測試僅作為數據參考,並不能完全模擬生產環境那麼復雜的網絡請求(請求數,各種大小的文件請求)。

 

一、測試環境:

 

硬件:Intel Xeon E5410 @ 2.33GHz * 2,16G內存,SATA 500G * 4(RAID 10)

 

安裝squid 2.7

 

./configure -prefix=/opt/squid2.7 -enable-xmalloc-statistics --enable-async-io=320 --with-maxfd=65536 -enable-useragent-log -enable-referer-log -enable-epoll -disable-poll -enable-large-cache-files -disable-internal-dns -enable-linux-netfilter -enable-truncate -enable-x-accelerator-vary -enable-follow-x-forwarded-for -with-large-files -with-pthreads -enable-storeio="aufs,coss,diskd,ufs" -enable-kill-parent-hack -enable-gnuregex -enable-cache-digests -enable-delay-pools -enable-stacktraces -enable-default-err-language=Simplify_Chinese -enable-err-languages="Simplify_Chinese English" --enable-auth="basic" --enable-basic-auth-helpers="NCSA" --enable-snmp

 

注意:

 

1、不要使用-enable-dlmalloc這個編譯參數,否則運行一段時間會報錯 FATAL: xcalloc: Unable to allocate 1 blocks of 4112 bytes!

 

參考:

 

http://www.mail-archive.com/[email protected]/msg48804.html

 

http://www.mail-archive.com/[email protected]/msg40839.html

 

大致意思是dlmalloc是squid在某些系統本身malloc太爛的情況的代替方案,dlmalloc已經很老,且不支持2G以上內存(比較有意思的是之前使用的squid 3.0也用了這個參數,卻正常運行,內存使用有配置超過10G的,可能3.0有特殊處理兼容了這種編譯配置)。

 

Squid 3的編譯參數:

 

www:/srv# /opt/squid3/sbin/squid -v

Squid Cache: Version 3.0.STABLE25

configure options: '--prefix=/opt/squid3' '--enable-dlmalloc' '--enable-gnuregex' '--enable-async-io=160' '--enable-removal-policies=heap,lru' '--enable-delay-pools' '--enable-storeio=ufs,aufs,null' '--disable-wccp' '--enable-kill-parent-hack' '--disable-select' '--enable-auth=basic' '--with-aio' '--disable-ident-lookup' '--with-filedescriptors=65536' '--enable-err-languages=Simplify_Chinese' '--enable-default-err-languages=Simplify_Chinese'

 

3.1的編譯參數基本和3.0一樣。

 

squid幾個版本使用的基本是一樣的squid.conf,性能相關的幾個配置如下:

 

cache_mem 4000 MB

maximum_object_size_in_memory 512 KB

 

#cache_dir

cache_dir aufs /srv/squid_cache 20480 16 256

 

maximum_object_size 4096 KB

 

 

Varnish:

 

tar zxf varnish-2.1.5.tar.gz

cd varnish-2.1.5

./configure --prefix=/opt/varnish

 

運行參數:

 

/opt/varnish/sbin/varnishd -u www -g www -f /opt/varnish/etc/varnish/aipai.vcl -a 0.0.0.0:8080 -s file,/srv/varnish_cache/cache/varnish_cache.data,1G -w 1024,51200,10 -t 3600 -T 0.0.0.0:30000  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved