<wbr id="pms3h"><big id="pms3h"></big></wbr>

    1. <i id="pms3h"><bdo id="pms3h"></bdo></i>
        長治網站建設
        Windows系統下Apache性能優化,提高并發
          Apache服務器配合PHP日趨成為當前網站架設的主流應用,但是在國內Linux系統畢竟沒有Windows系統應用的多,因此飄易整理下在windows系統下如何優化apache的性能。


            在Windows系統上面按以往Unix/linux的經驗配置Apache時,由于Windows的內存回收機制和進程管理的不同,會發現許多新問題。前些時單位的網站需要搬遷到新的Windows服務器,筆者在調試過程中也碰上了許多問題。新系統是Windows 2003 Server,為了滿足網站高負荷的要求,在調整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段,


        <IfModule mpm_winnt_module>
        ThreadsPerChild      150
        MaxRequestsPerChild    0
        </IfModule>

        以上是缺省的配置,一般情況下夠用了,但負荷較大的網站就需要修改了,否則訪問網站會變慢或沒有響應。實際設置中可以根據apache-status查看apache實時連接狀態,查看其中線程占用數目情況來進行相應的調整,我的服務器最后設置如下:


        <IfModule mpm_winnt_module>
        #ThreadLimit     350
        ThreadsPerChild    350
        MaxRequestsPerChild    10000
        Win32DisableAcceptEx
        </IfModule>

        其中ThreadLimit是占用系統線程數限制,修改后會在apache-status中直接看到效果,就是對應的最大的可用線程數(如下所示):1 requests currently being processed, 349 idle workers
        對于mpm_winnt,ThreadLimit的默認值是1920;對于其他mpM這個值是64。
        注意:Apache在編譯時內部有一個硬性的限制"ThreadLimit 20000"(對于mpm_winnt是"ThreadLimit 15000"),你不能超越這個限制。


        ThreadsPerChlid是Apache進程的子線程數,這個指令設置了每個子進程建立的線程數。子進程在啟動時建立這些線程后就不再建立新的線程了。如果使用一個類似于mpm_winnt只有一個子進程的mpM,這個數值要足夠大,以便可以處理可能的請求高峰。如果使用一個類似于worker有多個子進程的mpM,每個子進程所擁有的所有線程的總數要足夠大,以便可以處理可能的請求高峰。
        該參數需要根據 apache-status實時的監控情況來調節,太大會導致內存增長過快,直到服務器當機,太小會導致服務器連接隊列在高峰期時占滿,從而導致網站連接 慢。同時我們應該修改另一個配置文件httpd-default.php中的超時設置來配合這個參數。
        對于mpm_winnt,ThreadsPerChild的默認值是64;對于其他mpM是25。


        MaxRequestsPerChild是進程的最大的請求數目,既指網站收到請求的緩存數。設置太小了會影響服務器性能,因為會占用較多cpu時間,太大了則會占用內存資源。一般大型的網站文件個數都是成千上萬,所以管理員應該根據網站情況自己設定。
        MaxRequestsPerChild指令設置每個子進程在其生存期內允許伺服的最大請求數量。到達MaxRequestsPerChild的限制后,子進程將會結束。如果MaxRequestsPerChild為"0",子進程將永遠不會結束。
        在mpm_netware和mpm_winnt上的默認值是"0"。
        將MaxRequestsPerChild設置成非零值有兩個好處:
        a)可以防止(偶然的)內存泄漏無限進行,從而耗盡內存。
        b)給進程一個有限壽命,從而有助于當服務器負載減輕的時候減少活動進程的數量。
        注意:對于KeepAlive鏈接,只有第一個請求會被計數。事實上,它改變了每個子進程限制最大鏈接數量的行為。


        Win32DisableAcceptEx加入該語句是為了解決一些警告:
        [warn] (OS 64)指定的網絡名不再可用。 : winnt_accept: Asynchronous AcceptEx failed。


        2、httpd-default.conf設置


        在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。我們需要調節以下參數:


        Timeout 20
        該參數為連接超時,缺省的300秒顯然太大,縮小該參數就會減少同時連接數,即用戶實際占用的線程數,這樣就可以起到配合上面ThreadsPerChlid參數的作用。


        KeepAlive On
        該參數為是否保持活連接,目前網站中一個頁面一般會包含多個文件,所以相應用戶訪問時會有多個請求,因此開啟可以提高服務器性能。


        MaxKeepAliveRequests 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 OFF
        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
        (附加說明:04:00為重啟時間,c:autostartserver.bat為第一步的bat文件地址)


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


        ——————————————————————————–


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


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


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


        有關at命令和shutdown命令的更詳盡信息,請在Windows Server 2003的命令提示符下輸入“at /?”和“shutdown /?”獲得,或者在http://support.microsoft.com/kb/317371/zh-cn,也有微軟官方知識庫中的相關文章。


            本文原文出處飄易沒有找到,原作者如有看到,請留下網址,我會補充鏈接進來。


            【Windows下如何開啟 apache的 apache-status監控功能】:


        httpd.conf中,加載模塊: 
        把 LoadModule status_module modules/mod_status.so 這句加上,如果前面有帶#號,開啟的話,需要將#去除,并加入:
        <location /server-status>
                 SetHandler server-status
                 Order Deny,Allow
                 Deny from all
                 Allow from localhost
        </location>
        ExtendedStatus On

        這是一個完整的server-status的配置。
        配置完成,重新啟動apache即可(注意,不能直接restart,而要先stop,再start)


        可以用http://localhost/server-status來訪問,同時
        http://localhostm/server-status?refresh=N將表示訪問狀態頁面可以每N秒自動刷新一次;
        Deny from表示禁止的訪問地址;
        Allow from表示允許的地址訪問;
        ExtendedStatus On 表示的是待會訪問的時候能看到詳細的請求信息,另外該設置僅能用于全局設置,不能在特定的虛擬主機中打開或關閉。啟用擴展狀態信息將會導致服務器運行效率降低。

        2006-2014 IT0355.com 山西中聯科創科技有限公司. All Rights Reserved.
        電話:0355-3728808 傳真:0355-3728808
        ICP備案號:晉ICP備06003721號本站已通過國際W3C認證
        關鍵字:中聯科創,長治網站建設,長治網站推廣,長治網絡工程,長治軟件開發,山西網站建設,山西軟件開發 長治五金網

                    

        国内精品自线在拍2020不卡_国语精品91自产拍在线_亚洲一级黄色在线观看_亚洲最大AV无码网站