對於坊間流傳的:
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
編譯參數
配置文件
visible_hostname test2.hiadmin.com2.Squid 3.0
編譯參數
配置文件
visible_hostname test2.hiadmin.com3.Varnish 1.1.2
編譯參數
配置文件
backend default {運行參數
varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:804.Nginx 0.6.31
編譯參數
配置文件
worker_processes 10;5.http_load
運行參數
6.squid 2.7
編譯參數
配置文件
visible_hostname test2.hiadmin.com測試結果
點圖放大
圖標中標注淺黃色的為客戶端在抓取過程中只出現一次或幾次的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和內存占用率控制的更好.
======================================================
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