歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Apache服務器全局配置之資源限制

Apache服務器全局配置之資源限制

日期:2017/2/27 16:03:52   编辑:Linux教程
資源限制相關指令:
LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
RLimitCPU
RLimitMEM
RLimitNPROC
ThreadStackSize

LimitRequest*系列指令用來限制Apache在讀取客戶端請求的過程中使用的資源數量。通過限制這些值,可以減輕某些拒絕服務(DOS)攻擊。
RLimit*系列指令用來限制Apache子進程所派生的進程使用的資源數量。通常,這些指令用來控制CGI腳本和SSI exec命令所使用的資源。
ThreadStackSize指令在某些平台上用來控制堆棧大小。

LimitRequestBody指令
語法:LimitRequestBody bytes
默認值:LimitRequestBody 0

這 個指令用來設置客戶端發送的HTTP請求的最大字節數。LimitRequestBody指令可以作用於整個服務器、特定目錄、特定文件、特定位置。如果 客戶端的請求超出了LimitRequestBody設置的值,那麼服務器會回應一個錯誤信息給客戶端,而不會去處理這個請求。

Bytes在0(不限制)到2147483647(2GB)之間。
比如:你允許客戶端將文件上傳到某個位置,並且希望將上傳文件的大小限制為500K,
LimitRequestBody 512000

LimitRequestFields指令
語法:LimitRequestFields number
默認:LimitRequestFields 100

這個指令用來設置客戶端向服務器請求中HTTP請求頭域的數量。一般一個客戶端請求頭域的數量很少大於20,但是客戶端的不同這個數字也將有很大的差異。這個經常取決於用戶配置他們的浏覽器擴展以支持更詳細的內容協商。可選的HTTP擴展經常使用請求頭域來實現。

number是一個0(不限制)到32767之間的整數。默認值為編譯時的常量DEFAULT_LIMIT_REQUEST_FIELDS(發布值為100)。

LimitRequestFieldsize指令
語法:LimitRequestFieldsize bytes
默認:LimitRequestFieldsize 8190

這個指令用來設置客戶端發送的HTTP請求頭的最大字節數。一般來說,服務器需要此值夠大,以適應普通客戶的的任何請求的頭域大小。頭域的大小一般與浏覽器支持的內容協議有密切關系。

一般情況下,不要更改這個值,使用默認即可。

LimitRequestLine指令
語法:LimitRequestLine bytes
默認:LimitRequestLine 8190

這 個指令用來設置客戶端發送的HTTP請求行的最大字節數。請求行包括HTTP方法、URL、協議版本等。因此LimitRequestLine指令能夠限 制URL的長度,服務器會需要這個值足夠大以裝載它所有的資源名,包括可能在GET請求中所傳遞的查詢部分的所有信息。

一般情況下,不要更改這個值,使用默認即可。

RLimitCPU指令
語法:RLimitCPU seconds | max [seconds|max]
默認:未定義,使用操作系統默認值
這個指令用來設置Apache子進程派生的進程占用CPU的最大秒數。

這裡可以設置一個或者兩個參數。第一個參數設置所有進程的軟資源限制,第二個參數設置最大資源限制。兩個參數均可設置為一個數值或者是“max”(表示設置為操作系統允許的最大值)。要增大此資源限制最大值需要以root運行服務器或是在初始化啟動語句中進行設置。

這個指令只作用於Apache子進程所派生的進程,而不是Apache子進程本身。這個范圍包括CGI腳本和SSI執行命令,不包括所有從Apache父進程派生出的進程。比如管道日志。

CPU資源限制表示每進程占用的秒數。

RLimitMEM指令
語法:RLimitMEM bytes | max [bytes|max]
默認:未定義,使用操作系統默認值
這個指令用來設置Apache子進程派生的進程占用內存的最大字節數。

這裡可以設置一個或者兩個參數。第一個參數設置所有進程的軟資源限制,第二個參數設置最大資源限制。兩個參數均可設置為一個數值或者是“max”(表示設置為操作系統允許的最大值)。要增大此資源限制最大值需要以root運行服務器或是在初始化啟動語句中進行設置。

這個指令只作用於Apache子進程所派生的進程,而不是Apache子進程本身。這個范圍包括CGI腳本和SSI執行命令,不包括所有從Apache父進程派生出的進程。比如管道日志。
內存資源限制表示為每進程占用的字節數。

RLimitNPROC指令
語法:RLimitNPROC number | max [number|max]
默認:未定義,使用操作系統默認值
這個指令用來設置Apache子進程派生的進程數目。

這裡可以設置一個或者兩個參數。第一個參數設置所有進程的軟資源限制,第二個參數設置最大資源限制。兩個參數均可設置為一個數值或者是“max”(表示設置為操作系統允許的最大值)。要增大此資源限制最大值需要以root運行服務器或是在初始化啟動語句中進行設置。

這個指令只作用於Apache子進程所派生的進程,而不是Apache子進程本身。這個范圍包括CGI腳本和SSI執行命令,不包括所有從Apache父進程派生出的進程。比如管道日志。
進程限制控制了每個用戶的進程數。

ThreadStackSize指令
語法:ThreadStackSize size
默認:NetWare上為65536,其他平台上等於操作系統默認值
這個指令用來設置處理客戶端連接(包括調用模塊以協助處理)的線程允許使用的最大棧尺寸(字節)。
大多數情況下,操作系統默認的棧尺寸很合理。但是在某些情況下,需要調整這個值:

在默認棧尺寸較小的平台上(比如HP-UX),Apache可能會在使用一些需要較大棧尺寸的第三方模塊時崩潰。這樣的問題可以通過將 ThreadStackSize設置為一個較大的值來解決。這種調整應當僅僅在第三方模塊提供者明確要求的情況下才需要,或者是您通過診斷確定是由於棧空 間太小而導致崩潰。

在某些平台上,如果默認的棧空間大於服務器運行所需空間,那麼將ThreadStackSize值降低到小於操作系統默 認值可以讓每個進程中允許生成的最大線程數量增加。這種類型的調整應該僅在測試環境中使用,並且對所有服務器進程進行充分的測試,因為處理某些罕見的請求 需要較大的棧空間。一個很小的服務器配置變化就有可能使得當前的ThreadStackSize設置變得不合適。
Copyright © Linux教程網 All Rights Reserved