linux子进程父进程例子,linux 子进程访问父进程
問題分析
ECS Linux 系統下 Apache 的默認工作模式是 prefork MPM,使用多個子進程,每個子進程只有一個線程。每個進程在某個確定的時間只能維持一個連接,效率高,但內存占用量比較大。如果不做調整,訪問量增大可能造成 Apache 崩潰的情況。
解決方案
具體使用哪種模式是在編譯安裝 Apache 時指定的。在編譯的時候可以加入 —with-pem=(prefork|worker) 選項決定啟用什么模式。可以使用 httpd -l 命令查看當前 Apache 的工作模式:
Apache 的如下配置參數對性能影響較大:
StartServers 5MinSpareServers 5MaxSpareServers 10MaxClients 150MaxRequestsPerChild 0
建議做如下修改:
$ vi /usr/local/apache/httpd/conf/extra/httpd-mpm.conf StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 1024 MaxClients 1024 MaxRequestsPerChild 300
說明:
這些參數是經驗上的參數,具體是否有效,需要根據服務器的配置,訪問量情況綜合考慮。可以通過逐步調整參數,觀察網站訪問情況的方法是網站的性能達到最優。
MaxRequestsPerChild 參數還是必要設置為非 0,避免內存消耗殆盡而導致系統觸發 OOM(Out Of Memory),導致應用系統異常,具體可以參考?Apache 官方文檔說明?。
最后,重啟apache生效:
$ /usr/local/apache/httpd/bin/apachectl restart
更多信息
附一些參數的介紹:
ServerLimit
默認的MaxClient最大是256個線程,如果想設置更大的值,就的加上ServerLimit這個參數。20000是ServerLimit這個參數的最大值。如果需要更大,則必須編譯apache,此前都是不需要重新編譯Apache。生效前提:必須放在其他指令的前面
StartServers指定服務器啟動時建立的子進程數量,prefork默認為5。
MinSpareServers指定空閑子進程的最小數量,默認為5。如果當前空閑子進程數少于MinSpareServers ,那么Apache將以最大每秒一個的速度產生新的子進程。此參數不要設的太大。
MaxSpareServers設置空閑子進程的最大數量,默認為10。如果當前有超過MaxSpareServers數量的空閑子進程,那么父進程將殺死多余的子進程。此參數不要設的太大。如果你將該指令的值設置為比MinSpareServers小,Apache將會自動將其修改成”MinSpareServers+1”
MaxClients限定同一時間客戶端最大接入請求的數量(單個進程并發線程數),默認為256。任何超過MaxClients限制的請求都將進入等候隊列,一旦一個鏈接被釋放,隊列中的請求將得到服務。要增大這個值,你必須同時增大ServerLimit。
MaxRequestsPerChild每個子進程在其生存期內允許伺服的最大請求數量,默認為10000.到達MaxRequestsPerChild的限制后,子進程將會結束。如果 MaxRequestsPerChild為”0”,子進程將永遠不會結束。將MaxRequestsPerChild設置成非零值有兩個好處:
可以防止(偶然的)內存泄漏無限進行,從而耗盡內存。
給進程一個有限壽命,從而有助于當服務器負載減輕的時候減少活動進程的數量。
總結
以上是生活随笔為你收集整理的linux子进程父进程例子,linux 子进程访问父进程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: electron开发_基于Electro
- 下一篇: 档案盒正面标签制作_错题本科学制作方法、