在varnish、squid、apache、nginx中選出一個(gè)更好的緩存服務(wù)器
一、varnish、squid、apache、nginx的區(qū)別
1、從這些功能上。varnish和squid是專業(yè)的cache服務(wù),而apache,nginx這些都是第三方模塊完成。
2、要做cache服務(wù)的話,我們肯定是要選擇專業(yè)的cache服務(wù),優(yōu)先選擇squid和varnish。
varnish本身的技術(shù)上優(yōu)勢(shì)要高于squid,它采用了“Visual Page Cache”技術(shù),在內(nèi)存的利用上,Varnish比Squid具有優(yōu)勢(shì),它避免了Squid頻繁在內(nèi)存、磁盤中交換文件,性能要比Squid高。varnish是不能cache到本地硬盤上的。
還有強(qiáng)大的通過Varnish管理端口,可以使用正則表達(dá)式快速、批量地清除部分緩存
squid的優(yōu)勢(shì)在于完整的龐大的cache技術(shù)資料,和很多的應(yīng)用生產(chǎn)環(huán)境(這應(yīng)該與squid早出來有關(guān))。
3、談?wù)刵ginx,nginx是用第三方模塊ncache做的緩沖,其性能基本達(dá)到varnish,但在架構(gòu)中nginx一般作為反向(靜態(tài)文件現(xiàn)在用nginx的很多,并發(fā)能支持到2萬+)。在靜態(tài)架構(gòu)中,如果前端直接面對(duì)的是cdn活著前端了4層負(fù)載的話,完全用nginx的cache就夠了。
4、本人覺得如果是在apache服務(wù)上提升性能,做一些本地cache是完全可以的,但如果在系統(tǒng)架構(gòu)中用apache做cache服務(wù),那就有點(diǎn)牛頭不對(duì)馬尾了。
二、測(cè)試varnish、squid、apache、nginx
一,測(cè)試環(huán)境
1,硬件是奔騰雙核,機(jī)子三年前買的。系統(tǒng)是archlinux
2,測(cè)試varnish和squid的時(shí)候,web服務(wù)用的apache
3,測(cè)試apache的時(shí)候,啟動(dòng)了5個(gè)進(jìn)程,不過隨著壓力的增加,進(jìn)程會(huì)增加的。
4,測(cè)試nginx的時(shí)候,啟動(dòng)了十個(gè)nginx進(jìn)程,20個(gè)php-cgi進(jìn)程
5,varnish,squid,nginx用的是反向代理的形勢(shì),也就是說訪問圖片的時(shí)候,要先透過緩存工具
二,測(cè)試
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的緩存效率命中率真的好高
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.
從測(cè)試效果來說,squid挺讓我失望的,在測(cè)試前,我心里是這樣估計(jì)的,緩存最好的是varnish,其次是squid,然后nginx,最后是apache,現(xiàn)在呢,squid是最差的。后來我看了一下log文件,發(fā)現(xiàn)正常情況下,緩存和沒有緩存的比率不是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.
從上面的測(cè)試結(jié)果我們可以發(fā)現(xiàn),varnish > nginx > apache > squid,我想這個(gè)結(jié)果,根大家預(yù)期的結(jié)果有點(diǎn)出入,因?yàn)閟quid做老牌文件緩存工具怎么會(huì)這么差呢,squid的命中率低,我在網(wǎng)上查了一下,很多人都是這樣的,這個(gè)可能根個(gè)人配置有關(guān)系,也許真正的高手,才能讓squid發(fā)揮最大功力
Varnish是一款高性能的開源HTTP加速器,一般用來和Nginx、Apache等搭配使用,組建一個(gè)高效率的Web服務(wù)器。Varnish的某個(gè)負(fù)責(zé)接受新HTTP連接的線程開始等待用戶,如果有新的HTTP連接過來,它總負(fù)責(zé)接收,然后叫醒某個(gè)等待中的線程。
Worker線程讀入HTTP請(qǐng)求的URI,查找已有的object,如果命中則直接返回并回復(fù)用戶。如果沒有命中,則需要將所請(qǐng)求的內(nèi)容,從后端服務(wù)器中取過來,存到緩存中,然后再回復(fù)。Varnish根據(jù)所讀到object的大小,創(chuàng)建相應(yīng)大小的緩存文件。
按照官方的說法,Varnish是一個(gè)cache型的HTTP反向Dai理,Varnish根據(jù)請(qǐng)求來創(chuàng)建緩存文件,如果有一個(gè)超時(shí)線程,檢測(cè)緩存中所有object的生存期,如果超初設(shè)定的TTL(Time To Live)沒有被訪問,就刪除之,并且釋放相應(yīng)的結(jié)構(gòu)體及存儲(chǔ)內(nèi)存。
從各方面的數(shù)據(jù)來看,Varnish在處理Web請(qǐng)求的能力已經(jīng)強(qiáng)于squid、Apache等,使用Varnish能大提高你的web服務(wù)器并且降低Web服務(wù)器負(fù)載。
- linux下通過Squid反向代理搭建CDN緩存服務(wù)器的配置方法
- 搭建一個(gè)大型網(wǎng)站架構(gòu)的實(shí)驗(yàn)環(huán)境(Squid緩存服務(wù)器篇)
- squid3緩存服務(wù)器編譯安裝和高命中率配置示例
- CentOS下使用Squid架設(shè)CDN服務(wù)器的方法
- Linux下Squid代理服務(wù)器的架設(shè)與維護(hù)經(jīng)驗(yàn)分享
- 簡(jiǎn)單架設(shè)SSH+Squid代理服務(wù)器的自由上網(wǎng)通道的方法
- 在Windows下利用Squid開設(shè)代理服務(wù)器
- Linux下Squid配置詳解 Squid代理服務(wù)器配置
- 使用Squid做代理服務(wù)器的方法
- 使用squid搭建http和https的代理服務(wù)器設(shè)置指南
相關(guān)文章
在 CentOS 8/RHEL 8 上安裝和使用 Cockpit的方法
Cockpit 是一個(gè)基于 Web 的服務(wù)器管理工具,可用于 CentOS 和 RHEL 系統(tǒng)。最近發(fā)布的 CentOS 8 和 RHEL 8,其中 cockpit 是默認(rèn)的服務(wù)器管理工具。這篇文章主要介紹了在 CentOS 8/RHEL 8 上安裝和使用 Cockpit的方法,需要的朋友可以參考下2019-10-10Apache NameVirtualHost *:80 has no VirtualHosts問題解決辦法
這篇文章主要介紹了Apache NameVirtualHost *:80 has no VirtualHosts問題解決辦法,一個(gè)很簡(jiǎn)單的配置性錯(cuò)誤,需要的朋友可以參考下2014-08-08

CentOS設(shè)置精準(zhǔn)時(shí)間的方法

Linux 用cp和rsync同步文件時(shí)跳過指定目錄的方法

Xshell實(shí)現(xiàn)Windows上傳文件到Linux主機(jī)的方法