apache檢視工作模式及調優

2022-09-06 13:51:26 字數 3243 閱讀 2525

一,檢視工作模式

如果出現prefork.c,表示apache工作在prefork模式下

二,prefork調優

serverlimit 3000

startservers 750

minspareservers 5

maxspareservers 100

maxclients 3000

maxrequestsperchild 10000

首先來看看各個引數的意義(引號裡引用的是官方文件的描述):

(1)serverlimit和maxclients 伺服器最大同時響應請求數

這個就是你當前配置的最大的併發響應數,對應的是的程序數,兩個引數同時修改,maxclients不得大於serverlimit引數。

serverlimit的大小,取決於你系統的資源,每個程序預設占用2m記憶體,基本可以按照這個公式來計算:最大記憶體*80%/2m=serverlimit

(2)startservers 750 啟動時預設啟動的程序數

這個引數預設是5,因為會通過自動啟動新程序來增加響應服務的程序數,這個值不做調整的也是可以的,會由預設的5增加到滿足服務的程序數,但是會出現開始啟動時的卡住。

小啟動引數有乙個好處:就是可以讓傳遞後後端tomcat的壓力緩慢增加上來,而不是一下子增加壓力。可以把這個調整到當前服務最大的併發數,當前服務最大

併發連線數,可以通過監控程序個數:ps -ef | grep httpd | wc -l

來獲得。不用調得太大,否則是無謂增加通過jk去跟tomcat建立的連線。

注意:

所以不要一次啟動太多的程序,只啟動足夠用的程序即可。其他增加的流量,會自動調整程序數,直到maxclients引數限定的範圍。

(3)minspareservers 5 最小空閒程序

minspareservers指令設定空閒子程序的最小數量。所謂空閒子程序是指沒有正在處理請求的子程序。如果當前空閒子程序數少於minspareservers ,那麼將以第一秒乙個,第二秒兩個,第三秒四個,按指數遞增個數的速度產生新的子程序。

(4)maxspareservers 10 最大空閒程序

maxspareservers指令設定空閒子程序的最大數量。所謂空閒子程序是指沒有正在處理請求的子程序。如果當前有超過maxspareservers數量的空閒子程序,那麼父程序將殺死多餘的子程序。

可以調整這兩個引數,但是這兩個引數的值不能設得太大,否則apache程序太多

官網上關於這兩個引數都有這麼句話:「將此引數設的太大通常是乙個壞主意。」

在一台壓力大(併發訪問2800)的伺服器上,maxspareservers這個值設定的是200。

(5)maxrequestsperchild 10000

"maxrequestsperchild指令設定每個子程序在其生存期內允許伺服的最大請求數量。到達maxrequestsperchild的限制後,子程序將會結束。如果maxrequestsperchild為"0",子程序將永遠不會結束。

將maxrequestsperchild設定成非零值有兩個好處:

* 可以防止(偶然的)記憶體洩漏無限進行,從而耗盡記憶體。

* 給程序乙個有限壽命,從而有助於當伺服器負載減輕的時候減少活動程序的數量。

注意 對於keepalive鏈結,只有第乙個請求會被計數。事實上,它改變了每個子程序限制最大鏈結數量的行為。"

也就是說實際上這個時候子程序最大連線數等於maxrequestsperchild*maxkeepaliverequests

所以在開啟keepalive後,需要同時設定maxrequestsperchild和maxrequestsperchild,確保每個apache程序在服務一定請求數後會關閉,重新開啟新的子程序,避免apache程序異常導致的記憶體洩露和資源占用。

(6)keep-alive

預設:on

傳送的請求,在maxrequestsperchild裡面只算乙個,不管這個連線傳送了多少個請求。

(7)maxkeepaliverequests

預設:100

"乙個建立好的keep-alive連線,允許傳送的請求的個數。一旦建立連線,要麼就是個數達到了斷開,要麼就是等keepalivetimeout時間到了斷開連線。

maxkeepaliverequests指令限制了當啟用keepalive時,每個連線允許的請求數量。如果將此值設為"0",將不限制請求的數目。我們建議最好將此值設為乙個比較大的值,以確保最優的伺服器效能。"

這個數字的設定,必須考慮在乙個時間段內,同乙個使用者訪問你的服務會發多少請求。要結合keepalivetimeout引數來考慮。

舉個例子,使用者需要間隔時間不大於keepalivetimeout的時間內,連續請求10個檔案,那麼這個引數就應該設定成10,如果使用者在連續時間裡不

甚至要在之後的很長時間後請求,那麼這個keepalivetimeout時間就可以設定得很短,以便盡早斷開這種使用者,把資源讓個其他使用者。

(8)keepalivetimeout

預設:5

"在乙個建立好的keep-alive連線上,在maxkeepaliverequests個數未滿的情況下,等待下乙個請求的時間。"

如果有請求到達,那麼apache等待io響應的timeout時間時間開始生效,timeout時間沒等到響應,連線被斷開;如果keepalivetimeout時間內,沒有請求到達,連線就被斷開。

具體設定可以參考配合maxkeepaliverequests引數。同時這個引數又受timeout引數影響,在一次成功連線中,timeout時間內沒有等到響應,也會斷開連線。

(9)timeout

預設:300

"timeout指令用於設定apache等待以下三種事件的時間長度:

1. 接受乙個get請求耗費的總時間。

2. post或put請求時,接受兩個tcp包之間的時間。

3. 應答時tcp包傳輸中兩個ack包之間的時間。

我們計畫在發展里程中,逐步把它們分別變得更易配置。計時器在1.2版本之前的預設值為1200,而現在已經設定為300了,但對於絕大多數情況來說仍是足夠的。沒有把它預設值設的更小的原因在於**裡還有點問題:有時傳送乙個包之後,計時器沒有復位。」

Apache調優及配置

keepalivetimeout 5 持續作用中伺服器在兩次請求之間等待的時間數 maxkeepaliverequests 3000 乙個長連線中允許的最高請求數量 minspareservers 5 自己翻譯 充許最小的空閒程序 maxspareservers 10 自己翻譯 充許最大的空閒程序 ...

apache負載調優

apache負載調優 watch n 1 d pgrep httpd wc l apache動態檢視連線數 ps aux grep httpd wc l ps aux grep v grep awk httpd end 檢視apache占用記憶體平均數 vim etc sysctl.conf 編輯檔...

Apache 效能調優 參考篇

1 記憶體 適當選用適合大小的記憶體,保證谷峰負載時,有足夠的記憶體使用 2 使用ab測試apache效能 使用ab的缺點 不能更真實的模仿使用者的操作。3 調節保持連線的設定 keepalive on 在單一連線時進行多個請求 maxkeepaliverequests 200 單一連線時間可以允許...