高性能HTTP加速器Varnish(性能調(diào)優(yōu)篇)_第1頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、高性能http加速器varnish(性能調(diào)優(yōu)篇)varnish是否能穩(wěn)定、迅速的運(yùn)行,與linux本身的優(yōu)化以及varnish自身參數(shù)的設(shè)置有很大關(guān)系,在varnish安裝配置完成后,還必需從操作系統(tǒng)和varnish配置參數(shù)兩個(gè)方面向varnish服務(wù)器舉行性能優(yōu)化,從而最大程度上發(fā)揮varnish的性能。 一、優(yōu)化linux內(nèi)核參數(shù) 內(nèi)核參數(shù)是用戶和系統(tǒng)內(nèi)核之間交互的一個(gè)接口,通過這個(gè)接口,用戶可以在系統(tǒng)運(yùn)行的同時(shí)動(dòng)態(tài)的更新內(nèi)核配置,而這些內(nèi)核參數(shù)是通過linux proc文件系統(tǒng)存在的,因此,可以通過對proc文件系統(tǒng)舉行調(diào)節(jié),達(dá)到性能優(yōu)化的目的。 以下參數(shù)是官方給出的一個(gè)配置,內(nèi)容如下:

2、 net.ipv4.ip_local_port_range = 1024 65536 net.core.em_max=16777216 net.core.wmem_max=16777216 net.ipv4.t_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 net.ipv4.tcp_fin_out = 30 dev_max_backlog = 30000。 net.ipv4.tcp_no_meics_save=1 net.core.somaxconn = 262144 net.ipv4.tcp_syookies =

3、 1 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 對上面的每個(gè)選項(xiàng)含義說明如下: net.ipv4.ip_local_port_range:用來指定外部銜接的端口范圍,默認(rèn)是32768到61000,這里設(shè)置為1024到65536。 net.core.rmem_max:該文件指定了接收套接字緩沖區(qū)大小的最大值,單位是字節(jié)。 net.core.wmem_max:該文件指定了發(fā)送套

4、接字緩沖區(qū)大小的最大值,單位是字節(jié)。 net.ipv4.tcp_rmem:此參數(shù)與net.ipv4.tcp_wmem都是用來優(yōu)化tcp接收/發(fā)送緩沖區(qū),包含三個(gè)整數(shù)值,分離是:min,default,max: tcp_rmem:min表示為tcp socket預(yù)留用于接收緩沖的最小內(nèi)存數(shù)量,default為tcp socket預(yù)留用于接收緩沖的缺省內(nèi)存數(shù)量,max用于tcp socket接收緩沖的內(nèi)存最大值。 tcp_wmem:min表示為tcp socket預(yù)留用于發(fā)送緩沖的內(nèi)存最小值,default為tcp socket預(yù)留用于發(fā)送緩沖的缺省內(nèi)存值,max用于tcp socket發(fā)送緩沖的

5、內(nèi)存最大值。 net.ipv4.tcp_fin_timeout:此參數(shù)用來削減處于fin-wait-2銜接狀態(tài)的時(shí)光,使系統(tǒng)可以處理更多的銜接。此參數(shù)值為整數(shù),單位為秒。 舉一個(gè)例子:在一個(gè)tcp會(huì)話過程中,在會(huì)話結(jié)束時(shí),a首先向b發(fā)送一個(gè)fin包,在獲得b的ack確認(rèn)包后,a就進(jìn)入fin wait2狀態(tài)等待b的fin包,然后給b發(fā)ack確認(rèn)包。此參數(shù)就是用來設(shè)置a進(jìn)入fin wait2狀態(tài)等待對方fin包的超時(shí)時(shí)光。假如時(shí)光到了仍未收到對方的fin包就主動(dòng)釋放該會(huì)話。 dev_max_backlog:該參數(shù)表示在每個(gè)網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時(shí),允許送到隊(duì)列的數(shù)據(jù)包的最

6、大數(shù)量。 net.ipv4.tcp_ookie:該文件表示是否打開syn cookie功能,tcp_syncookies是一個(gè)開關(guān),該功能有助于庇護(hù)服務(wù)器免受syncflood襲擊。默認(rèn)為0,這里設(shè)置為1。 net.ipv4.tcp_max_orphans:表示系統(tǒng)中最多有多少tcp套接字不被關(guān)聯(lián)到任何一個(gè)用戶文件句柄上。假如超過這個(gè)數(shù)字,孤兒銜接就會(huì)復(fù)位并打輸出警告信息。這個(gè)限制僅僅是為了防止容易的dos襲擊。此值不能太小。這里設(shè)置為262144。 net.ipv4.tcp_max_syn_backlog:表示syn隊(duì)列的長度,預(yù)設(shè)為1024,這里設(shè)置隊(duì)列長度為262144,以容納更多等待銜

7、接。 net.ipv4.tcp_synack_retries:這個(gè)參數(shù)用于設(shè)置內(nèi)核放棄銜接之前發(fā)送syn+ack包的數(shù)量。 net.ipv4.tcp_syn_retries:此參數(shù)表示在內(nèi)核放棄建立銜接之前發(fā)送syn包的數(shù)量。 將以上內(nèi)容添加到/etc/sysctl.conf文件中,然后執(zhí)行如下,讓設(shè)置生效: rootvarnish-server sysctl -p 二、優(yōu)化系統(tǒng)資源 假設(shè)有這樣一種狀況,當(dāng)一臺(tái)linux 主機(jī)上同時(shí)登陸了10個(gè)人,在系統(tǒng)資源沒有限制的狀況下,這10個(gè)用戶同時(shí)打開了500個(gè)文檔,而假設(shè)每個(gè)文檔的大小有10m,這時(shí)系統(tǒng)的內(nèi)存資源就會(huì)受到巨大的挑戰(zhàn)。假如沒有內(nèi)存方面

8、的限制,勢必造成系統(tǒng)資源利用的混亂,而實(shí)際的應(yīng)用環(huán)境要比這種假設(shè)復(fù)雜的多,這時(shí),就派上用場了。它是一種容易并且有效的實(shí)現(xiàn)資源限制的方式。 ulimit可以限制系統(tǒng)的各個(gè)方面,它通過限制shell啟動(dòng)進(jìn)程所占用的資源,來完成系統(tǒng)資源的合理利用和分配,ulimit支持以下各種類型的限制:所創(chuàng)建的內(nèi)核文件的大小、內(nèi)存鎖住的大小、常駐內(nèi)存集的大小、進(jìn)程數(shù)據(jù)塊的大小、打開文件描述符的數(shù)量、shell進(jìn)程所能用法的最大虛擬內(nèi)存、shell 進(jìn)程創(chuàng)建文件的大小、分配堆棧的最大大小、單個(gè)用戶的最大線程數(shù)、cpu 時(shí)光等。同時(shí),它還支持硬資源和軟資源的限制。 ulimit有暫時(shí)限制和永遠(yuǎn)限制兩種實(shí)現(xiàn)方式,它可以

9、限制通過用法其指令行登錄的shell會(huì)話,并在會(huì)話終止時(shí)結(jié)束限制,而不影響于其它shell會(huì)話。對于長久的固定限制,ulimit的指令可以添加到由登錄shell的配置文件中,這樣就實(shí)現(xiàn)了永遠(yuǎn)限制shell啟動(dòng)進(jìn)程所占用的資源。 ulimit用法格式為:ulimit options value 詳細(xì)的options 含義以及容易示例如表1所示: 650) this.wth=650; src=/uploads/allimg/111111/215j26013-0.png border=0 alt= / 650) this.width=650; src=/uploads/allimg/111111/2

10、15j252i-1.png border=0 alt= / 在了解了ulimit的含義和使用以后,接下來就可以針對varnish系統(tǒng)舉行相關(guān)的設(shè)定了,這里的參數(shù)設(shè)定值如下所示,但是此值不能一概而論,需要按照應(yīng)用環(huán)境的不同,挑選適合的值: ulimit -hsn 131072 ulimit -hsc unlimit 為了保證這個(gè)限制永遠(yuǎn)生效,最好將ulimit設(shè)置放到varnish的啟動(dòng)腳本中。 三、varnish參數(shù)優(yōu)化 通過 4 pools thread_pool_min 50 threads thread_pool_max 5120 threads thread_pool_timeout

11、10 seconds thread_pools:用來設(shè)置線程池的數(shù)量,普通認(rèn)為這個(gè)值和系統(tǒng)cpu的數(shù)目相同最好,設(shè)置過多的pools,varnish的并發(fā)處理能力會(huì)更強(qiáng),但是也會(huì)消耗更多的cpu和內(nèi)存。 thread_pool_min:用來設(shè)置每個(gè)pools的最小threads數(shù),當(dāng)pools接收到可用的哀求后,就會(huì)將哀求分配給空閑的threads來處理。 thread_pool_max:表示全部pools對應(yīng)的threads數(shù)總和的最大值,此值不能太大,可以設(shè)置為系統(tǒng)峰值的90%左右即可,設(shè)置過大,會(huì)導(dǎo)致進(jìn)程hung住。 thread_pool_timeout:表示threads的超時(shí)過期時(shí)光,當(dāng)threads數(shù)大于thread_pool_min設(shè)定值時(shí),threads空閑超過thread_pool_timeout設(shè)定的時(shí)光時(shí),thread就會(huì)被釋放掉。 另外還有兩個(gè)參數(shù): lru_interval 20 seconds listen_depth 1024 connections lru_interval:這是個(gè)時(shí)光參數(shù),也許意思是說假如有一個(gè)對象在內(nèi)存中超過了此參數(shù)設(shè)定的時(shí)光還沒有被重用時(shí),就

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論