Wins2003系統中Apache效能優化方法

2022-10-03 10:21:10 字數 2916 閱讀 9718

為了滿足**高負荷的要求,在調整apache引數時發現程序經常占用記憶體過多導致當機。經過不斷的優化和修改引數組合,終於讓伺服器穩定 下來,可以滿足大量訪問的考驗和應用要求。筆者總結了除錯過程中的問題和解決辦法如下,以供有類似需求的網管員參考(系統環境為windows server 2003和apache2.2.8):

1、http-mpm.conf設定

apache的執行緒數控制檔案為http-mpm.conf,在conf/exrtra目錄下面,要使該配置檔案起作用需要在httpd.conf 中將 include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。

在windows系統中,起作用的是winnt mpm段,

複製** **如下:

threadsperchild 150

maxrequestsperchild 0

以上是預設的配置,一般情況下夠用了,但負荷較大的**就需要修改了,否則訪問**會變慢或沒有響應。實際設定中可以根據apache-status檢視apache實時連線狀態,檢視其中執行緒占用數目情況來進行相應的調整,我的伺服器最後設定如下:

複製** **如下:

threadsperchild 350

threadlimit 350

maxrequestsperchild 10000

程式設計客棧module>

其中threadlimit是占用系統執行緒數限制,修改後會在apache-status中直接看到效果,就是對應的最大的可用執行緒數(如圖所示)。

maxrequestsperchild是程序的最大的請求數目,既指**收到請求的快取數。設定太小了會影響伺服器效能,因為會占用較多cpu時 間,太大了則會占用記憶體資源。一般大型的**檔案個數都是成千上萬,所以管理員應該根據**情況自己設定,只要不為0(無限制)就可以,以防止記憶體溢位。

threadsperchlid是apache程序的子執行緒數,意思是伺服器開了這麼多的執行緒數來等待響應客戶端請求。該引數需要根據 apache-status實時的監控情況來調節,太大會導致記憶體增長過快,直到伺服器當機,太小會導致伺服器連線佇列在高峰期時佔滿,從而導致**連線 慢。同時我們應該修改另乙個配置檔案httpd-default.php中的超時設定來配合這個引數。

2、httpd-default.conf設定

在httpd.conf中去掉include conf/extra/httpd-default.conf程式設計客棧前的#以使httpd-default.php生效。我們需要調節以下引數:

timeout 15

該引數為連線超時,預設的300秒顯然太大,縮小該引數就會減少同時連線數,即使用者實際占用的執行緒數,這樣就可以起到配合上面threadsperchlid引數的作用。

keepalive on

該引數為是否保持活連線,目前**中乙個頁面一般會包含多個檔案,所以相應使用者訪問時會有多個請求,因此開啟可以提高伺服器效能。

maxkeaghhncepaliverequests 50

該引數為最大的活連線請求數,可以根據網頁實際包含的檔案數目自行調節。

keepalivetimeout 5

該引數為活連線的超時時間,一般只要設定成小於timeout即可。

這樣設定後,apache在響應請求和防止惡意攻擊方面就取得較為平衡的效果,當然由於記憶體**機制和程序管理不同,windows下長期執行 apache還是不如unix穩定,因此我們可以讓apache在每天凌晨訪問人數少時自動重啟一次,以**資源。用windows自帶的計畫任務就可以 簡單的實現。這樣,我們就使apache在windows平台下像unix一樣長期穩定的提供服務了。

windows下apache及mysql定時自動重啟&伺服器定時自動重啟

有時候覺得,伺服器執行時間過長,造成伺服器記憶體等壓力過大。因此,不用重新啟動伺服器的情況下,完成apache和mysql的記憶體釋放,是非常有益處的(把重啟時間設定在訪問量最低的)。

首先,apache的重新啟動。

有兩種apache自動定時重啟的方法(兩種,第二種可一同時啟動apache和mysql,所以推薦一下第二種):

第一種、使用任務計畫

>>>>任務計畫

>>apache restart>>選擇時間(可以設定的為每天凌晨2-4點)>>一路確定即可。

第二種(個人覺得比較簡單,同樣也是任務計畫) 採用at命令新增計畫任務

1、在c:盤根目錄新建乙個apacheautostart.bat檔案,然後右鍵編輯,將檔案內容設為如下後儲存:

複製** **如下:

@echo owww.cppcns.comff

net stop apache2

net start apache2

net stop mysql

net start mysql

(附加說明:上面的apache2與mysql為服務名稱。)

2、"開始"-》執行"cmd"-》執行命令"at 04:00 c:apacheautostart.bat"

這樣每天早晨4點系統就會自動重啟apache與mysql

(附加說明:0程式設計客棧4:00為重啟時間,c:autostartserver.bat為第一步的bat檔案位址)

mysql的重新啟動,也通過上面at命令方法重新啟動了,所以推薦一下第二種方法。

同樣,你也可一給自己的伺服器加上乙個定時自動重啟的功能(比如每週重新啟動伺服器一次)。

可以用at命令和shutdown命令配合實現。

at命令可以安排在特定日期和時間執行命令和程式,shutdown則可以在命令列下關閉並重啟計算機,要在每週日的特定時間自動重啟計算機,只需 在命令提示符下輸入"at 02:00 /every:星期一 shutdown /l /r /y /c",這將在每週一的凌晨2點自動重啟計算機。

本文標題: wins2003系統中apache效能優化方法

本文位址:

Windows系統中Apache支援SSL

關於https的介紹看這裡 1 doc進入apache目錄,將conf目錄下的openssl.cnf檔案拷貝到bin檔案裡面 bin目錄中,可以看到openssl.exe檔案 2 bin目錄下 openssl req config openssl.cnf new out server.csr key...

Win 2003系統中不必要開放的服務列表

以下為win 2003系統中不必要開放的服務列表 computer browser 維護網路上計算機的最新列表以及提供這個列表 task scheduler 允許程式在指定時間執行 routing and remote access 在區域網以及廣域網環境中為企業提供路由服務 removable s...

分布式系統中的冪等性

最近很多人都在談論冪等性,好吧,這回我也來聊聊這個話題,光看著倆字,一開始的確有點一頭霧水,語文不好嘛,詞太專業嘛,對吧 現如今我們的系統大多拆分為分布式soa,或者微服務,一套系統中包含了多個子系統服務,而乙個子系統服務往往會去呼叫另乙個服務,而服務呼叫服務無非就是使用rpc通訊或者restful...