亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 模塊
   致謝 | 譯者聲明 | 本篇譯者:金步國(guó) | 本篇譯稿最后更新:2006年1月22日 | 獲取最新版本

Apache MPM 公共指令

說(shuō)明收集了被多個(gè)多路處理模塊(MPM)實(shí)現(xiàn)的公共指令
狀態(tài)MPM
top

AcceptMutex 指令

說(shuō)明Apache用于串行化多個(gè)子進(jìn)程在(多個(gè))網(wǎng)絡(luò)套接字(socket)上接受請(qǐng)求的方法
語(yǔ)法AcceptMutex Default|method
默認(rèn)值AcceptMutex Default
作用域server config
狀態(tài)MPM
模塊prefork, worker

AcceptMutex指令用于設(shè)置串行化多個(gè)子進(jìn)程在(多個(gè))網(wǎng)絡(luò)套接字上接受請(qǐng)求的方法。在2.0版本以前,只能在編譯時(shí)設(shè)定此方法。應(yīng)當(dāng)在這里使用的最佳方法取決于不同的硬件體系結(jié)構(gòu)和操作系統(tǒng)。欲知詳情,請(qǐng)參見(jiàn)性能調(diào)節(jié)文檔。

如果設(shè)置為Default ,那么將會(huì)使用編譯時(shí)自動(dòng)選擇的默認(rèn)值。其他可用的方法在下面列出。注意,并不是所有的方法在所有的平臺(tái)上都是可用的,如果指定了一個(gè)不可用的方法,將會(huì)在錯(cuò)誤日志中記錄下這個(gè)不可用的方法。

flock
這種方法調(diào)用系統(tǒng)函數(shù)flock(2)來(lái)鎖定一個(gè)加鎖文件(其位置取決于LockFile指令)。
fcntl
這種方法調(diào)用系統(tǒng)函數(shù)fcntl(2)來(lái)鎖定一個(gè)加鎖文件(其位置取決于LockFile指令)。
posixsem
(2.0及更新版本)這種方法使用了POSIX信號(hào)燈。如果一個(gè)運(yùn)行中的線程占有了互斥segfault ,則信號(hào)燈的所有者將不會(huì)被恢復(fù),從而導(dǎo)致服務(wù)器的掛起和失去響應(yīng)。
pthread
(1.3及更新版本)這種方法使用了POSIX互斥,按理應(yīng)該可以用于所有完整實(shí)現(xiàn)了POSIX線程規(guī)范的體系中,但是似乎只能用在Solaris2.5及更新版本中,甚至只能在某種配置下才正常運(yùn)作。如果遇到這種情況,則應(yīng)該提防服務(wù)器的掛起和失去響應(yīng)。只提供靜態(tài)內(nèi)容的服務(wù)器可能不受影響。
sysvsem
(1.3及更新版本)這種方案使用SysV風(fēng)格的信號(hào)燈以實(shí)現(xiàn)互斥。不幸的是,SysV風(fēng)格的信號(hào)燈有一些副作用,其一是,Apache有可能不能在結(jié)束以前釋放這種信號(hào)燈(見(jiàn)ipcs()的man page),另外,這種信號(hào)燈API給與網(wǎng)絡(luò)服務(wù)器有相同uid的CGI提供了拒絕服務(wù)攻擊的機(jī)會(huì)(所有CGI,除非用了類似suexeccgiwrapper)。鑒于此,在多數(shù)體系中都不用這種方法,除了IRIX(因?yàn)榧渔i文件的方法在IRIX中代價(jià)太高)。

如果你想知道編譯時(shí)自動(dòng)選擇的默認(rèn)值,你可以將LogLevel設(shè)為debug ,這樣默認(rèn)的AcceptMutex就會(huì)記錄到ErrorLog中。

警告

在大多數(shù)系統(tǒng)上,使用pthread時(shí),如果一個(gè)子進(jìn)程在持有AcceptCntl互斥信號(hào)時(shí)異常中止,服務(wù)器將會(huì)掛起和失去響應(yīng),此時(shí)必須手動(dòng)重啟服務(wù)器才能解決問(wèn)題。但Solaris是一個(gè)例外,因?yàn)樗峁┝艘粋(gè)機(jī)制(Apache利用了該機(jī)制),允許在一個(gè)持有互斥信號(hào)的子進(jìn)程異常中止后恢復(fù)互斥信號(hào)。

如果你的操作系統(tǒng)實(shí)現(xiàn)了pthread_mutexattr_setrobust_np()函數(shù),基本上就能安全的使用pthread選項(xiàng)。

top

CoreDumpDirectory 指令

說(shuō)明Apache使用的內(nèi)核轉(zhuǎn)儲(chǔ)目錄
語(yǔ)法CoreDumpDirectory directory
默認(rèn)值參見(jiàn)說(shuō)明
作用域server config
狀態(tài)MPM
模塊beos, mpm_winnt, prefork, worker

這個(gè)指令用于控制Apache使用的內(nèi)核轉(zhuǎn)儲(chǔ)目錄。默認(rèn)位于ServerRoot下,因?yàn)檫@個(gè)目錄通常對(duì)于運(yùn)行服務(wù)器的用戶是不可寫(xiě)的,內(nèi)核轉(zhuǎn)儲(chǔ)一般也就不會(huì)寫(xiě)入內(nèi)容。如果你在調(diào)試中需要內(nèi)核轉(zhuǎn)儲(chǔ),你可以用這個(gè)指令來(lái)指定另外一個(gè)目錄。

Linux上的內(nèi)核轉(zhuǎn)儲(chǔ)

如果Apache以root身份啟動(dòng)并切換至其他用戶,即使指定的轉(zhuǎn)儲(chǔ)目錄對(duì)進(jìn)程是可寫(xiě)的,Linux內(nèi)核也將禁止Apache進(jìn)行內(nèi)核轉(zhuǎn)儲(chǔ)。但是Apache2.0.46及以后的版本在你明確指定CoreDumpDirectory的情況下,能夠在Linux2.4以上的版本中強(qiáng)制實(shí)現(xiàn)內(nèi)核轉(zhuǎn)儲(chǔ)。

top

EnableExceptionHook 指令

說(shuō)明在子進(jìn)程崩潰以后啟用一個(gè)鉤子來(lái)運(yùn)行異常處理程序
語(yǔ)法EnableExceptionHook On|Off
默認(rèn)值EnableExceptionHook Off
作用域server config
狀態(tài)MPM
模塊prefork, worker
兼容性僅在 Apache 2.0.49 及以后的版本中可用

因?yàn)榘踩颍@個(gè)指令僅在編譯時(shí)使用了 --enable-exception-hook 選項(xiàng)的情況下才可用。它會(huì)在一個(gè)子進(jìn)程崩潰以后啟用一個(gè)鉤子(hook)來(lái)運(yùn)行一個(gè)外部模塊以做些后繼處理。

目前有兩個(gè)模塊(mod_whatkilledusmod_backtrace)可以被鉤子使用。請(qǐng)參見(jiàn)Jeff Trawick的EnableExceptionHook site以獲得更多信息。

top

GracefulShutdownTimeout 指令

說(shuō)明指定優(yōu)雅停止服務(wù)器的超時(shí)秒數(shù)
語(yǔ)法GracefulShutDownTimeout seconds
默認(rèn)值GracefulShutDownTimeout 0
作用域server config
狀態(tài)MPM
模塊prefork, worker, event
兼容性僅在 Apache 2.2 及以后的版本中可用

GracefulShutdownTimeout設(shè)置服務(wù)器在收到"優(yōu)雅停止"信號(hào)后最多允許使用多少秒來(lái)處理尚未完成的連接,超時(shí)后服務(wù)器將強(qiáng)行退出。

設(shè)為"0"表示永不超時(shí),也就是服務(wù)器必須在處理完所有尚未完成的請(qǐng)求之后才能退出。

top

Group 指令

說(shuō)明對(duì)請(qǐng)求提供服務(wù)的Apache子進(jìn)程運(yùn)行時(shí)的用戶組
語(yǔ)法Group unix-group
默認(rèn)值Group #-1
作用域server config
狀態(tài)MPM
模塊beos, mpmt_os2, prefork, worker
兼容性Apache2.0以后只對(duì)全局配置有效

Group指令指定了用于對(duì)客戶端請(qǐng)求提供服務(wù)的Apache子進(jìn)程運(yùn)行時(shí)的用戶組。為了使用這個(gè)指令,Apache必須以root初始化啟動(dòng),否則在切換用戶組時(shí)會(huì)失敗,并繼續(xù)以初始化啟動(dòng)時(shí)的用戶組運(yùn)行。Unix-group可以是下列之一:

用戶組的名稱
通過(guò)名稱引用組。
"#"號(hào)后跟一個(gè)組編號(hào)(GID)
通過(guò)編號(hào)引用組。

示例

Group www-group

建議你專門(mén)為Apache服務(wù)器新建一個(gè)用戶組。一些管理員使用nobody用戶,但是這并非總是可用或是合適的。

安全

不要將Group(或User)設(shè)置成root ,除非你明確知道自己在做什么,并且明白其風(fēng)險(xiǎn)所在。

特別提示:在<VirtualHost>段中使用該指令已經(jīng)不再被支持了。你可以使用suexecSuexecUserGroup指令來(lái)達(dá)到這個(gè)目的。

注意

雖然Group指令也存在于beosmpmt_os2MPM中,但是事實(shí)上沒(méi)用任何用處,只不過(guò)是個(gè)擺飾罷了。

top

Listen 指令

說(shuō)明服務(wù)器監(jiān)聽(tīng)的IP地址和端口
語(yǔ)法Listen [IP-address:]portnumber [protocol]
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker, event
兼容性Apache2.0以后必須設(shè)置該指令,protocol參數(shù)僅在2.1.5及以后版本中可用

Listen指令指示Apache只在指定的IP地址和端口上監(jiān)聽(tīng);默認(rèn)情況下Apache會(huì)在所有IP地址上監(jiān)聽(tīng)。Listen是一個(gè)必須設(shè)置的指令。如果在配置文件中找不到這個(gè)指令,服務(wù)器將無(wú)法啟動(dòng)。這和先前的版本不一樣。

Listen指令指定服務(wù)器在那個(gè)端口或地址和端口的組合上監(jiān)聽(tīng)接入請(qǐng)求。如果只指定一個(gè)端口,服務(wù)器將在所有地址上監(jiān)聽(tīng)該端口。如果指定了地址和端口的組合,服務(wù)器將在指定地址的指定端口上監(jiān)聽(tīng)。

使用多個(gè)Listen指令可以指定多個(gè)不同的監(jiān)聽(tīng)端口和/或地址端口組合。服務(wù)器將會(huì)對(duì)列出的所有端口和地址端口組合上的請(qǐng)求作出應(yīng)答。

例如,想要服務(wù)器接受80和8000端口上的請(qǐng)求,可以這樣設(shè)置:

Listen 80
Listen 8000

為了讓服務(wù)器在兩個(gè)確定的地址端口組合上接受請(qǐng)求,可以這樣設(shè)置:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000

IPv6地址必須像下面的例子一樣,用方括號(hào)括起來(lái):

Listen [2001:db8::a00:20ff:fea7:ccea]:80

可選的protocol參數(shù)在大多數(shù)情況下并不需要。若未指定該參數(shù),則將為443端口使用默認(rèn)的https協(xié)議,為其它端口使用http協(xié)議。在這里指定協(xié)議是為了確定使用哪個(gè)模塊來(lái)處理請(qǐng)求,以及根據(jù)AcceptFilter指令根據(jù)不同的協(xié)議有針對(duì)性的進(jìn)行優(yōu)化。

僅在使用非標(biāo)準(zhǔn)端口時(shí)才需要指定protocol參數(shù)。比如在8443端口運(yùn)行https協(xié)議:

Listen 192.170.2.1:8443 https

錯(cuò)誤條件

多個(gè)Listen指令指定了同一個(gè)地址和端口的組合后,會(huì)導(dǎo)致"Address already in use"錯(cuò)誤。

參見(jiàn)

top

ListenBackLog 指令

說(shuō)明半鏈接(pending connection)隊(duì)列的最大長(zhǎng)度
語(yǔ)法ListenBacklog backlog
默認(rèn)值ListenBacklog 511
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

半鏈接(pending connection)隊(duì)列的最大長(zhǎng)度。一般不需要調(diào)整此項(xiàng)參數(shù),然而在一些系統(tǒng)上,必須增大此值以抵御TCP SYN 洪水攻擊。參見(jiàn)操作系統(tǒng)的listen(2)系統(tǒng)調(diào)用的后備參數(shù)。

操作系統(tǒng)常常將此值限制為一個(gè)較小的數(shù)字,具體根據(jù)操作系統(tǒng)的不同而不同。需要注意的是,許多操作系統(tǒng)并不是正好使用后備數(shù)值,而是取決于設(shè)置的值(通常大于后備值)。

top

LockFile 指令

說(shuō)明接受串行鎖文件的位置
語(yǔ)法LockFile filename
默認(rèn)值LockFile logs/accept.lock
作用域server config
狀態(tài)MPM
模塊prefork, worker

LockFile指令設(shè)置當(dāng)AcceptMutex指令的值是fcntlflock的時(shí)候,Apache使用的鎖文件的位置。該指令通常保持它的默認(rèn)值。改變默認(rèn)值的主要原因是logs目錄位于一個(gè)NFS文件系統(tǒng)上,因?yàn)殒i文件必須位于本地磁盤(pán)上。主服務(wù)器進(jìn)程的PID會(huì)自動(dòng)添加到文件名后面。

安全

最好不要將此文件放在任何人都可以具有寫(xiě)權(quán)限的目錄(比如/var/tmp)中,因?yàn)閯e人可以通過(guò)建立一個(gè)與服務(wù)器企圖建立的鎖文件同名的文件,來(lái)阻止服務(wù)器啟動(dòng),從而造成一個(gè)拒絕服務(wù)攻擊。

參見(jiàn)

top

MaxClients 指令

說(shuō)明允許同時(shí)伺服的最大接入請(qǐng)求數(shù)量
語(yǔ)法MaxClients number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊beos, prefork, worker

MaxClients指令設(shè)置了允許同時(shí)伺服的最大接入請(qǐng)求數(shù)量。任何超過(guò)MaxClients限制的請(qǐng)求都將進(jìn)入等候隊(duì)列,直到達(dá)到ListenBacklog指令限制的最大值為止。一旦一個(gè)鏈接被釋放,隊(duì)列中的請(qǐng)求將得到服務(wù)。

對(duì)于非線程型的MPM(也就是prefork),MaxClients表示可以用于伺服客戶端請(qǐng)求的最大子進(jìn)程數(shù)量,默認(rèn)值是256。要增大這個(gè)值,你必須同時(shí)增大ServerLimit 。

對(duì)于線程型或者混合型的MPM(也就是beosworker),MaxClients表示可以用于伺服客戶端請(qǐng)求的最大線程數(shù)量。線程型的beos的默認(rèn)值是50。對(duì)于混合型的MPM默認(rèn)值是16(ServerLimit)乘以25(ThreadsPerChild)的結(jié)果。因此要將MaxClients增加到超過(guò)16個(gè)進(jìn)程才能提供的時(shí)候,你必須同時(shí)增加ServerLimit的值。

top

MaxMemFree 指令

說(shuō)明主內(nèi)存分配程序在未調(diào)用free()的情況下允許持有的最大自由內(nèi)存數(shù)量(KB)
語(yǔ)法MaxMemFree KBytes
默認(rèn)值MaxMemFree 0
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, prefork, worker, mpm_winnt

MaxMemFree指令用于設(shè)置主內(nèi)存分配程序在未調(diào)用free()的情況下允許持有的最大自由內(nèi)存數(shù)量(KB)。若未設(shè)置或設(shè)置為"0",將表示無(wú)限制。

top

MaxRequestsPerChild 指令

說(shuō)明每個(gè)子進(jìn)程在其生存期內(nèi)允許伺服的最大請(qǐng)求數(shù)量
語(yǔ)法MaxRequestsPerChild number
默認(rèn)值MaxRequestsPerChild 10000
作用域server config
狀態(tài)MPM
模塊mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

MaxRequestsPerChild指令設(shè)置每個(gè)子進(jìn)程在其生存期內(nèi)允許伺服的最大請(qǐng)求數(shù)量。到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會(huì)結(jié)束。如果MaxRequestsPerChild為"0",子進(jìn)程將永遠(yuǎn)不會(huì)結(jié)束。

不同的默認(rèn)值

mpm_netwarempm_winnt上的默認(rèn)值是"0"。

MaxRequestsPerChild設(shè)置成非零值有兩個(gè)好處:

注意

對(duì)于KeepAlive鏈接,只有第一個(gè)請(qǐng)求會(huì)被計(jì)數(shù)。事實(shí)上,它改變了每個(gè)子進(jìn)程限制最大鏈接數(shù)量的行為。

top

MaxSpareThreads 指令

說(shuō)明最大空閑線程數(shù)
語(yǔ)法MaxSpareThreads number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, mpmt_os2, worker

設(shè)置最大空閑線程數(shù)。不同的MPM對(duì)這個(gè)指令的處理是不一樣的:

worker的默認(rèn)值是"250"。這個(gè)MPM將基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。如果服務(wù)器中總的空閑線程數(shù)太多,子進(jìn)程將殺死多余的空閑線程。

mpm_netware的默認(rèn)值是"100"。既然這個(gè)MPM只運(yùn)行單獨(dú)一個(gè)子進(jìn)程,此MPM當(dāng)然亦基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。

beosmpmt_os2的工作方式與mpm_netware差不多,beos的默認(rèn)值是"50";mpmt_os2的默認(rèn)值是"10"。

限制

MaxSpareThreads的取值范圍是有限制的。Apache將按照如下限制自動(dòng)修正你設(shè)置的值:

參見(jiàn)

top

MinSpareThreads 指令

說(shuō)明最小空閑線程數(shù)
語(yǔ)法MinSpareThreads number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, mpmt_os2, worker

設(shè)置最小空閑線程數(shù),用于處理可能到來(lái)的突發(fā)請(qǐng)求。不同的MPM對(duì)這個(gè)指令的處理是不一樣的:

worker的默認(rèn)值是"75"。這個(gè)MPM將基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。如果服務(wù)器中總的空閑線程數(shù)太少,子進(jìn)程將產(chǎn)生新的空閑線程。

mpm_netware的默認(rèn)值是"10"。既然這個(gè)MPM只運(yùn)行單獨(dú)一個(gè)子進(jìn)程,此MPM當(dāng)然亦基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。

beosmpmt_os2的工作方式與mpm_netware差不多,beos的默認(rèn)值是"1";mpmt_os2的默認(rèn)值是"5"。

參見(jiàn)

top

PidFile 指令

說(shuō)明服務(wù)器用于記錄父進(jìn)程(監(jiān)控進(jìn)程)PID的文件
語(yǔ)法PidFile filename
默認(rèn)值PidFile logs/httpd.pid
作用域server config
狀態(tài)MPM
模塊beos, mpm_winnt, mpmt_os2, prefork, worker

PidFile指令設(shè)置服務(wù)器用于記錄父進(jìn)程(監(jiān)控進(jìn)程)PID的文件。如果指定的不是絕對(duì)路徑,那么將視為基于ServerRoot的相對(duì)路徑。

示例

PidFile /var/run/apache.pid

這個(gè)文件通常用來(lái)便于給服務(wù)器父進(jìn)程發(fā)送一個(gè)信號(hào),用于關(guān)閉或重啟服務(wù)器,以重新打開(kāi)ErrorLogTransferLog文件、重新讀取配置文件。這些可以通過(guò)發(fā)送一個(gè)"SIGHUP"(kill -1)信號(hào)到PidFile記錄的進(jìn)程PID。

PidFile和其他日志文件一樣要注意放置位置和安全問(wèn)題。

注意

從Apache2開(kāi)始,推薦使用apachectl腳本來(lái)啟動(dòng)或停止服務(wù)器。

top

ReceiveBufferSize 指令

說(shuō)明TCP接收緩沖區(qū)大小(字節(jié))
語(yǔ)法ReceiveBufferSize bytes
默認(rèn)值ReceiveBufferSize 0
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

這個(gè)指令設(shè)置服務(wù)器的TCP接收緩沖區(qū)的大小(字節(jié))。提高這個(gè)值會(huì)導(dǎo)致兩個(gè)后果:高速度和高潛伏時(shí)間(100ms左右)。

如果設(shè)置為"0",將使用操作系統(tǒng)默認(rèn)值。

top

ScoreBoardFile 指令

說(shuō)明存儲(chǔ)子進(jìn)程協(xié)調(diào)數(shù)據(jù)(coordination data)的文件
語(yǔ)法ScoreBoardFile file-path
默認(rèn)值ScoreBoardFile logs/apache_status
作用域server config
狀態(tài)MPM
模塊beos, mpm_winnt, prefork, worker

Apache使用記分板(scoreboard)在父進(jìn)程和子進(jìn)程之間進(jìn)行通信。一些體系結(jié)構(gòu)要求有一個(gè)文件來(lái)幫助通信。如果未指定這個(gè)文件,Apache會(huì)首先嘗試在匿名共享內(nèi)存中建立完整的記分板(scoreboard),若失敗,將繼續(xù)嘗試使用基于文件的共享存儲(chǔ)器在磁盤(pán)上建立這個(gè)文件。若利用這個(gè)指令指定這個(gè)文件的位置,則Apache將總是在磁盤(pán)上建立這個(gè)文件。

示例

ScoreBoardFile /var/run/apache_status

基于文件的共享存儲(chǔ)器對(duì)于使用直接訪問(wèn)記分板(scoreboard)的第三方程序是很有用的。

ScoreBoardFile放置在RAM disk中會(huì)對(duì)速度提升有很大幫助。但是同其他日志文件一樣也要注意放置位置和安全問(wèn)題。

參見(jiàn)

top

SendBufferSize 指令

說(shuō)明TCP發(fā)送緩沖區(qū)大小(字節(jié))
語(yǔ)法SendBufferSize bytes
默認(rèn)值SendBufferSize 0
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

這個(gè)指令設(shè)置服務(wù)器的TCP發(fā)送緩沖區(qū)的大小(字節(jié))。提高這個(gè)值會(huì)導(dǎo)致兩個(gè)后果:高速度和高潛伏時(shí)間(100ms左右)。

如果設(shè)置為"0",將使用操作系統(tǒng)默認(rèn)值。

top

ServerLimit 指令

說(shuō)明服務(wù)器允許配置的進(jìn)程數(shù)上限
語(yǔ)法ServerLimit number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊prefork, worker

對(duì)于preforkMPM,這個(gè)指令設(shè)置了MaxClients最大允許配置的數(shù)值。對(duì)于workerMPM,這個(gè)指令和ThreadLimit結(jié)合使用設(shè)置了MaxClients最大允許配置的數(shù)值。任何在重啟期間對(duì)這個(gè)指令的改變都將被忽略,但對(duì)MaxClients的修改卻會(huì)生效。

使用這個(gè)指令時(shí)要特別當(dāng)心。如果將ServerLimit設(shè)置成一個(gè)高出實(shí)際需要許多的值,將會(huì)有過(guò)多的共享內(nèi)存被分配。如果將ServerLimitMaxClients設(shè)置成超過(guò)系統(tǒng)的處理能力,Apache可能無(wú)法啟動(dòng),或者系統(tǒng)將變得不穩(wěn)定。

對(duì)于preforkMPM,只有在你需要將MaxClients設(shè)置成高于默認(rèn)值256的時(shí)候才需要使用這個(gè)指令。要將此指令的值保持和MaxClients一樣。

對(duì)于workerMPM,只有在你需要將MaxClientsThreadsPerChild設(shè)置成需要超過(guò)默認(rèn)值16個(gè)子進(jìn)程的時(shí)候才需要使用這個(gè)指令。不要將該指令的值設(shè)置的比MaxClients ThreadsPerChild需要的子進(jìn)程數(shù)量高。

注意

Apache在編譯時(shí)內(nèi)部有一個(gè)硬限制"ServerLimit 20000"(對(duì)于preforkMPM為"ServerLimit 200000")。你不能超越這個(gè)限制。

參見(jiàn)

top

StartServers 指令

說(shuō)明服務(wù)器啟動(dòng)時(shí)建立的子進(jìn)程數(shù)
語(yǔ)法StartServers number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊mpmt_os2, prefork, worker

StartServers指令設(shè)置了服務(wù)器啟動(dòng)時(shí)建立的子進(jìn)程數(shù)量。因?yàn)樽舆M(jìn)程數(shù)量動(dòng)態(tài)的取決于負(fù)載的輕重,所有一般沒(méi)有必要調(diào)整這個(gè)參數(shù)。

不同的MPM默認(rèn)值也不一樣。對(duì)于worker默認(rèn)值是"3"。對(duì)于prefork默認(rèn)值是"5",mpmt_os2是"2"。

top

StartThreads 指令

說(shuō)明服務(wù)器啟動(dòng)時(shí)建立的線程數(shù)
語(yǔ)法StartThreads number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊beos, mpm_netware

設(shè)置了服務(wù)器啟動(dòng)時(shí)建立的線程數(shù)量。因?yàn)榫程數(shù)量動(dòng)態(tài)的取決于負(fù)載的輕重,所有一般沒(méi)有必要調(diào)整這個(gè)參數(shù)。

對(duì)于mpm_netware ,默認(rèn)值是"50",由于只有一個(gè)進(jìn)程,因此所有的線程都將用于伺服請(qǐng)求。

對(duì)于beos ,默認(rèn)值是"10",同樣也是所有的線程都將用于伺服請(qǐng)求。

top

ThreadLimit 指令

說(shuō)明每個(gè)子進(jìn)程可配置的線程數(shù)上限
語(yǔ)法ThreadLimit number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊mpm_winnt, worker
兼容性僅用于2.0.41及以后版本的mpm_winnt

這個(gè)指令設(shè)置了每個(gè)子進(jìn)程可配置的線程數(shù)ThreadsPerChild上限。任何在重啟期間對(duì)這個(gè)指令的改變都將被忽略,但對(duì)ThreadsPerChild的修改卻會(huì)生效。

使用這個(gè)指令時(shí)要特別當(dāng)心。如果將ThreadLimit設(shè)置成一個(gè)高出ThreadsPerChild實(shí)際需要很多的值,將會(huì)有過(guò)多的共享內(nèi)存被分配。如果將ThreadLimitThreadsPerChild設(shè)置成超過(guò)系統(tǒng)的處理能力,Apache可能無(wú)法啟動(dòng),或者系統(tǒng)將變得不穩(wěn)定。該指令的值應(yīng)當(dāng)和ThreadsPerChild可能達(dá)到的最大值保持一致。

對(duì)于mpm_winnt,ThreadLimit的默認(rèn)值是1920;對(duì)于其他MPM這個(gè)值是64

注意

Apache在編譯時(shí)內(nèi)部有一個(gè)硬性的限制"ThreadLimit 20000"(對(duì)于mpm_winnt是"ThreadLimit 15000"),你不能超越這個(gè)限制。

top

ThreadsPerChild 指令

說(shuō)明每個(gè)子進(jìn)程建立的線程數(shù)
語(yǔ)法ThreadsPerChild number
默認(rèn)值參見(jiàn)下面的說(shuō)明
作用域server config
狀態(tài)MPM
模塊mpm_winnt, worker

這個(gè)指令設(shè)置了每個(gè)子進(jìn)程建立的線程數(shù)。子進(jìn)程在啟動(dòng)時(shí)建立這些線程后就不再建立新的線程了。如果使用一個(gè)類似于mpm_winnt只有一個(gè)子進(jìn)程的MPM,這個(gè)數(shù)值要足夠大,以便可以處理可能的請(qǐng)求高峰。如果使用一個(gè)類似于worker有多個(gè)子進(jìn)程的MPM,每個(gè)子進(jìn)程所擁有的所有線程的總數(shù)要足夠大,以便可以處理可能的請(qǐng)求高峰。

對(duì)于mpm_winntThreadsPerChild的默認(rèn)值是64;對(duì)于其他MPM是25

top

ThreadStackSize 指令

說(shuō)明處理客戶端連接的線程使用的棧尺寸(字節(jié))
語(yǔ)法ThreadStackSize size
默認(rèn)值NetWare上為65536;其它平臺(tái)上等于操作系統(tǒng)默認(rèn)值
作用域server config
狀態(tài)MPM
模塊mpm_netware, mpm_winnt, worker
兼容性僅在 Apache 2.1 及以后的版本中可用

ThreadStackSize指令設(shè)置了處理客戶端連接(包括調(diào)用模塊以協(xié)助處理)的線程允許使用的最大棧尺寸(字節(jié))。在大多數(shù)情況下,操作系統(tǒng)默認(rèn)的棧尺寸很合理,但是在某些情況下,需要調(diào)整這個(gè)值:

top

User 指令

說(shuō)明實(shí)際服務(wù)于請(qǐng)求的子進(jìn)程運(yùn)行時(shí)的用戶
語(yǔ)法User unix-userid
默認(rèn)值User #-1
作用域server config
狀態(tài)MPM
模塊prefork, worker
兼容性2.0版本起僅在全局服務(wù)器配置中可用

User指令用于設(shè)置實(shí)際提供服務(wù)的子進(jìn)程的用戶。為了使用這個(gè)指令,服務(wù)器必須以root身份啟動(dòng)和初始化。如果你以非root身份啟動(dòng)服務(wù)器,子進(jìn)程將不能夠切換至非特權(quán)用戶,并繼續(xù)以啟動(dòng)服務(wù)器的原始用戶身份運(yùn)行。如果確實(shí)以root用戶啟動(dòng)了服務(wù)器,那么父進(jìn)程將仍然以root身份運(yùn)行。Unix-userid是下列值之一:

一個(gè)用戶名
通過(guò)用戶名引用用戶
"#"號(hào)后面跟一個(gè)用戶編號(hào)
通過(guò)用戶編號(hào)引用用戶

用于運(yùn)行子進(jìn)程的用戶必須是一個(gè)沒(méi)有特權(quán)的用戶,這樣才能保證子進(jìn)程無(wú)權(quán)訪問(wèn)那些不想為外界所知的文件,同樣的,該用戶亦需沒(méi)有執(zhí)行那些不應(yīng)當(dāng)被外界執(zhí)行的程序的權(quán)限。強(qiáng)烈推薦你專門(mén)為Apache子進(jìn)程建立一個(gè)單獨(dú)的用戶和組。一些管理員使用nobody用戶,但是這并不能總是符合要求,因?yàn)榭赡苡衅渌绦蛞苍谑褂眠@個(gè)用戶。

安全

不要將User(或Group)設(shè)置成root ,除非你明確知道自己在做什么,并且明白其風(fēng)險(xiǎn)所在。

特別提示:在<VirtualHost>段中使用該指令已經(jīng)不再被支持了。你可以使用suexecSuexecUserGroup指令來(lái)達(dá)到這個(gè)目的。

注意

雖然User指令也存在于beosmpmt_os2MPM中,但是事實(shí)上沒(méi)用任何用處,只不過(guò)是個(gè)擺飾罷了。