談談varnish,squid,apache,nginx緩存的對比

老是有人在問cache用什麼,有varnish,squid,apache,nginx這幾種,究竟是咱們用什麼架構cache。php

一、從這些功能上。varnish和squid是專業的cache服務,而apache,nginx這些都是第三方模塊完成。前端

二、要作cache服務的話,咱們確定是要選擇專業的cache服務,優先選擇squid和varnish。linux

varnish自己的技術上優點要高於squid,它採用了「Visual Page Cache」技術,在內存的利用上,Varnish比Squid具備優點,它避免了Squid頻繁在內存、磁盤中交換文件,性能要比Squid高。 varnish是不能cache到本地硬盤上的。nginx

還有強大的經過Varnish管理端口,能夠使用正則表達式快速、批量地清除部分緩存web

squid的優點在於完整的龐大的cache技術資料,和不少的應用生產環境(這應該與squid早出來有關)。正則表達式

三、談談nginx,nginx是用第三方模塊ncache作的緩衝,其性能基本達到varnish,但在架構中nginx通常做爲反向(靜態文件 如今用nginx的不少,併發能支持到2萬+)。在靜態架構中,若是前端直接面對的是cdn活着前端了4層負載的話,徹底用nginx的cache就夠 了。apache

四、本人以爲若是是在apache服務上提高性能,作一些本地cache是徹底能夠的,但若是在系統架構中用apache作cache服務,那就有點牛頭不對馬尾了。緩存

---------------------------------------架構

一,測試環境併發

1,硬件是奔騰雙核,機子三年前買的。系統是archlinux

2,測試varnish和squid的時候,web服務用的apache

3,測試apache的時候,啓動了5個進程,不過隨着壓力的增長,進程會增長的。

4,測試nginx的時候,啓動了十個nginx進程,20個php-cgi進程

5,varnish,squid,nginx用的是反向代理的形勢,也就是說訪問圖片的時候,要先透過緩存工具

二,測試

1,varnish

[root@BlackGhost bin]# /usr/local/bin/webbench -c 100 -t 20 http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=476508 pages/min, 47258114 bytes/sec.
Requests: 158836 susceed, 0 failed.

varnish的緩存效率命中率真的好高,看下圖:

varnish

varnish

訪問了這麼次,沒有緩存只有一次,效率真的很高。

2,squid

[root@BlackGhost bin]# /usr/local/bin/webbench -c 100 -t 20 http://localhost:9000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost:9000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=133794 pages/min, 7475018 bytes/sec.
Requests: 44598 susceed, 0 failed.

從測試效果來講,squid挺讓我失望的,在測試前,我內心是這樣估計的,緩存最好的是 varnish,其次是squid,而後nginx,最後是apache,如今呢,squid是最差的。後來我看了一下log文件,發現正常狀況下,緩存 和沒有緩存的比率不是1:2,若是在高壓力下,緩存和沒有緩存的比率更小。

3,apache

[root@BlackGhost conf]# /usr/local/bin/webbench -c 100 -t 20 http://localhost/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=160890 pages/min, 15856005 bytes/sec.
Requests: 53630 susceed, 0 failed.

4,nginx

[root@BlackGhost conf]# /usr/local/bin/webbench -c 100 -t 20 http://localhost:10000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost:10000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=304053 pages/min, 30121517 bytes/sec.
Requests: 101351 susceed, 0 failed.

從上面的測試結果咱們能夠發現,varnish > nginx > apache > squid,我想這個結果,根你們預期的結果有點出入,由於squid作老牌文件緩存工具怎麼會這麼差呢,squid的命中率低,我在網上查了一下,不少 人都是這樣的,這個可能根我的配置有關係,也許真正的高手,才能讓squid發揮最大功力。

相關文章
相關標籤/搜索