首頁 php教程 PHP开发 Apache的效能最佳化(四)

Apache的效能最佳化(四)

Dec 21, 2016 am 11:26 AM

下面是prefork的預設設定段:

 

StartServers        

MaxSpareServers     10  //設定了最大的空閒進程數,如果空閒進程數大於這個值,Apache會自動kill掉一些多餘進程。這個值不要設得太大,但如果設的值比MinSpareServers小,Apache會自動把其調整為MinSpareServers+1。若站點負載較大,可考慮同時增加MinSpareServers和MaxSpareServers。

MaxClients         150  // MaxClients是這些指令中最為重要的一個,設定的是Apache可以同時處理的請求,是對Apache效能影響最大的參數。其預設值150是遠遠不夠的,如果請求總數已達到這個值(可透過ps -ef|grep http|wc -l來確認),那麼後面的請求就要排隊,直到某個已處理請求完畢。這就是系統資源還剩下很多而HTTP存取卻很慢的主要原因。系統管理員可以根據硬體配置和負載情況來動態調整這個值。雖然理論上這個值越大,可以處理的請求就越多,但Apache預設的限制不能大於256(在2.0中源自於#define DEFAULT_SERVER_LIMIT 256)。如果把這個值設為大於256,那麼Apache將無法啟動。事實上,256對於負載稍重的站點也是不夠的。在Apache 1.3中,這是個硬限制。如果要加大這個值,必須在「configure」前手工修改的原始碼樹下的src/include/httpd.h中找出256,就會發現「#define HARD_SERVER_LIMIT 256」這行。把256改為要增加的值(如4000),然後重新編譯Apache即可。在Apache 2.0中新加入了ServerLimit指令,使得無須重編譯Apache就可以加大MaxClients。 ServerLimit使用也是單獨加入一行在這就可以了。如果ServerLimit的值再這定義超過了20000,就要修改server/mpm/prefork/prefork.c  #define MAX_SERVER_LIMIT 20000。將20000改成更大的值。

 

MaxRequestsPerChild  0  //設定的是每個子程序可處理的請求數。每個子進程在處理了「MaxRequestsPerChild」個請求後將自動銷毀。 0意味著無限,即子程序永不銷毀。雖然預設為0可以使每個子進程處理更多的請求,但如果設為非零值也有兩點重要的好處:可防止意外的記憶體洩漏;在伺服器負載下降的時侯會自動減少子進程數。

 

 

worker的工作原理是,由主控制進程產生「StartServers」個子進程,每個子進程中包含固定的ThreadsPerChild執行緒數,各個執行緒獨立地處理請求。同樣,為了不在請求到來時再產生線程。

每個行程可以擁有的執行緒數量是固定的。 伺服器會根據負載情況做增加或減少進程數量的調整。單一控制進程負責子進程的建立。每個子進程可以建立ThreadsPerChild指定的固定數量的執行緒。 然後,由獨立的線程監聽並處理到來的連接。

Apache總是試圖維持一個備用的或說空閒的服務執行緒池。 如此,客戶端無須等待執行緒或進程的建立即可處理。 最初建立進程的數量是由StartServers指令決定。 其後,Apache偵測所有行程中空閒執行緒的總數,並新建或結束進程使總數維持在MinSpareThreads和MaxSpareThreads所指定的範圍以內。 由於這個過程是自動調整的,幾乎沒有必要修改這些指令的預設值。 同時可以處理的客戶端的最大數量取決於MaxClients指令,而進程建立的最大數量取決於ServerLimit指令。 ServerLimit乘以ThreadsPerChild必須大於等於MaxClients。

 以上就是Apache的效能最佳化(四)的內容,更多相關內容請關注PHP中文網(www.php.cn)! 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1659
14
CakePHP 教程
1415
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
apache中cgi目錄怎麼設置 apache中cgi目錄怎麼設置 Apr 13, 2025 pm 01:18 PM

要在 Apache 中設置 CGI 目錄,需要執行以下步驟:創建 CGI 目錄,如 "cgi-bin",並授予 Apache 寫入權限。在 Apache 配置文件中添加 "ScriptAlias" 指令塊,將 CGI 目錄映射到 "/cgi-bin" URL。重啟 Apache。

apache怎麼連接數據庫 apache怎麼連接數據庫 Apr 13, 2025 pm 01:03 PM

Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。

怎麼查看自己的apache版本 怎麼查看自己的apache版本 Apr 13, 2025 pm 01:15 PM

有 3 種方法可在 Apache 服務器上查看版本:通過命令行(apachectl -v 或 apache2ctl -v)、檢查服務器狀態頁(http://<服務器IP或域名>/server-status)或查看 Apache 配置文件(ServerVersion: Apache/<版本號>)。

apache80端口被佔用怎麼辦 apache80端口被佔用怎麼辦 Apr 13, 2025 pm 01:24 PM

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

怎麼查看apache版本 怎麼查看apache版本 Apr 13, 2025 pm 01:00 PM

如何查看 Apache 版本?啟動 Apache 服務器:使用 sudo service apache2 start 啟動服務器。查看版本號:使用以下方法之一查看版本:命令行:運行 apache2 -v 命令。服務器狀態頁面:在 Web 瀏覽器中訪問 Apache 服務器的默認端口(通常為 80),版本信息顯示在頁面底部。

apache不能啟動怎麼解決 apache不能啟動怎麼解決 Apr 13, 2025 pm 01:21 PM

Apache 無法啟動,原因可能有以下幾點:配置文件語法錯誤。與其他應用程序端口衝突。權限問題。內存不足。進程死鎖。守護進程故障。 SELinux 權限問題。防火牆問題。軟件衝突。

apache怎麼配置zend apache怎麼配置zend Apr 13, 2025 pm 12:57 PM

如何在 Apache 中配置 Zend?在 Apache Web 服務器中配置 Zend Framework 的步驟如下:安裝 Zend Framework 並解壓到 Web 服務器目錄中。創建 .htaccess 文件。創建 Zend 應用程序目錄並添加 index.php 文件。配置 Zend 應用程序(application.ini)。重新啟動 Apache Web 服務器。

apache怎麼刪除多於的服務器名 apache怎麼刪除多於的服務器名 Apr 13, 2025 pm 01:09 PM

要從 Apache 中刪除多餘的 ServerName 指令,可以採取以下步驟:識別並刪除多餘的 ServerName 指令。重新啟動 Apache 使更改生效。檢查配置文件驗證更改。測試服務器確保問題已解決。

See all articles