服務項目:網(wǎng)站建設、仿站、程序開發(fā)、APP開發(fā)設計、移動網(wǎng)站開發(fā)設計、企業(yè)網(wǎng)站設計、電子商務網(wǎng)站開發(fā)、網(wǎng)站維護、網(wǎng)站推廣、UX/UI 、HTML5、CSS3、JS / Jquery ...
四川???萍加邢薰?></a></div>
                    <div   id=四川???萍加邢薰? title=
四川???萍加邢薰?(開發(fā)設計官網(wǎng))TEL : 15308000360 / QQ : 38585404

您的位置:首頁 > 技術經(jīng)驗 > 服務器 > 正文

windows server 2003系統(tǒng)Apache性能優(yōu)化方法
技術支持服務電話:15308000360 【7x24提供運維服務,解決各類系統(tǒng)/軟硬件疑難技術問題】

為了滿足網(wǎng)站高負荷的要求,在調整Apache參數(shù)時發(fā)現(xiàn)進程經(jīng)常占用內(nèi)存過多導致當機。經(jīng)過不斷的優(yōu)化和修改參數(shù)組合,終于讓服務器穩(wěn)定下來,可以滿足大量訪問的考驗和應用要求。筆者總結了調試過程中的問題和解決辦法如下,以供有類似需求的網(wǎng)管員參考(系統(tǒng)環(huán)境為Windows Server 2003和apache2.2.8): 

1、http-mpm.conf設置 
Apache的線程數(shù)控制文件為http-mpm.conf,在conf/exrtra目錄下面,要使該配置文件起作用需要在httpd.conf 中將 Include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。 
在Windows系統(tǒng)中,起作用的是Winnt mpm段, 
 

代碼如下:
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>

以上是缺省的配置,一般情況下夠用了,但負荷較大的網(wǎng)站就需要修改了,否則訪問網(wǎng)站會變慢或沒有響應。實際設置中可以根據(jù)apache-status查看apache實時連接狀態(tài),查看其中線程占用數(shù)目情況來進行相應的調整,我的服務器最后設置如下: 
代碼如下:
<IfModule mpm_winnt_module>
ThreadsPerChild 350
ThreadLimit 350
MaxRequestsPerChild 10000
</IfModule>

其中ThreadLimit是占用系統(tǒng)線程數(shù)限制,修改后會在apache-status中直接看到效果,就是對應的最大的可用線程數(shù)(如圖所示)。 
MaxRequestsPerChild是進程的最大的請求數(shù)目,既指網(wǎng)站收到請求的緩存數(shù)。設置太小了會影響服務器性能,因為會占用較多cpu時 間,太大了則會占用內(nèi)存資源。一般大型的網(wǎng)站文件個數(shù)都是成千上萬,所以管理員應該根據(jù)網(wǎng)站情況自己設定,只要不為0(無限制)就可以,以防止內(nèi)存溢出。 
ThreadsPerChlid是Apache進程的子線程數(shù),意思是服務器開了這么多的線程數(shù)來等待響應客戶端請求。該參數(shù)需要根據(jù) apache-status實時的監(jiān)控情況來調節(jié),太大會導致內(nèi)存增長過快,直到服務器當機,太小會導致服務器連接隊列在高峰期時占滿,從而導致網(wǎng)站連接 慢。同時我們應該修改另一個配置文件httpd-default.php中的超時設置來配合這個參數(shù)。 
2、httpd-default.conf設置 
在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.conf生效。我們需要調節(jié)以下參數(shù): 
Timeout 15 
該參數(shù)為連接超時,缺省的300秒顯然太大,縮小該參數(shù)就會減少同時連接數(shù),即用戶實際占用的線程數(shù),這樣就可以起到配合上面ThreadsPerChlid參數(shù)的作用。 
KeepAlive On 
該參數(shù)為是否保持活連接,目前網(wǎng)站中一個頁面一般會包含多個文件,所以相應用戶訪問時會有多個請求,因此開啟可以提高服務器性能。 
MaxKeepAliveRequests 50 
該參數(shù)為最大的活連接請求數(shù),可以根據(jù)網(wǎng)頁實際包含的文件數(shù)目自行調節(jié)。 
KeepAliveTimeout 5 
該參數(shù)為活連接的超時時間,一般只要設置成小于Timeout即可。 
這樣設置后,Apache在響應請求和防止惡意攻擊方面就取得較為平衡的效果,當然由于內(nèi)存回收機制和進程管理不同,Windows下長期運行 Apache還是不如Unix穩(wěn)定,因此我們可以讓Apache在每天凌晨訪問人數(shù)少時自動重啟一次,以回收資源。用Windows自帶的計劃任務就可以 簡單的實現(xiàn)。這樣,我們就使Apache在Windows平臺下像Unix一樣長期穩(wěn)定的提供服務了。 
windows下apache及mysql定時自動重啟&服務器定時自動重啟 
有時候覺得,服務器運行時間過長,造成服務器內(nèi)存等壓力過大。因此,不用重新啟動服務器的情況下,完成apache和mysql的內(nèi)存釋放,是非常有益處的(把重啟時間設置在訪問量最低的)。 
首先,apache的重新啟動。 
有兩種apache自動定時重啟的方法(兩種,第二種可一同時啟動apache和mysql,所以推薦一下第二種): 
第一種、使用任務計劃 
開始>>程序>>附件>>管理工具>>任務計劃 
添加任務計劃>>下一步>>apache restart>>選擇時間(可以設置的為每天凌晨2-4點)>>一路確定即可。 

第二種(個人覺得比較簡單,同樣也是任務計劃) 采用at命令添加計劃任務 
1、在c:盤根目錄新建一個apacheautostart.bat文件,然后右鍵編輯,將文件內(nèi)容設為如下后保存: 
代碼如下:
@ECHO OFF
net stop apache2
net start apache2
net stop mysql
net start mysql
(附加說明:上面的apache2與mysql為服務名稱。) 
2、"開始"-》運行"cmd"-》執(zhí)行命令"at 04:00 c:apacheautostart.bat" 
這樣每天早晨4點系統(tǒng)就會自動重啟apache與mysql 
(附加說明:04:00為重啟時間,c:autostartserver.bat為第一步的bat文件地址) 
mysql的重新啟動,也通過上面at命令方法重新啟動了,所以推薦一下第二種方法。 
同樣,你也可一給自己的服務器加上一個定時自動重啟的功能(比如每周重新啟動服務器一次)。 
可以用at命令和shutdown命令配合實現(xiàn)。 
AT命令可以安排在特定日期和時間運行命令和程序,shutdown則可以在命令行下關閉并重啟計算機,要在每周日的特定時間自動重啟計算機,只需 在命令提示符下輸入"at 02:00 /every:星期一 shutdown /l /r /y /c",這將在每周一的凌晨2點自動重啟計算機。 



上一篇:讓Apache顯示目錄列表的配置方法
下一篇:解決:未在本地計算機上注冊“Microsoft.Jet.OLEDB.4.0”提供程序

相關熱詞搜索:windows apache