Apache仍然是連接網絡的網站和電腦中最廣泛使用的網站服務器。
此外,Apache繼續在主要網站服務器中增長最大,其次是Nginx和IIS。囙此,如果你是負責Apache系統管理員,你需要知道,如何確保您的Web服務器的最大效能符合您的需求)(
在這篇文章中,我們將討論一些建議,這將有助於你確保Apache工作的連續性,並使您能够處理從遠程客戶預期的請求數量。
然而,請記住,Apache不是設計來安裝測試記錄-但儘管如此,實際上,它仍然可以保證高性能的任何使用,你可以想到的。
1號理事會:總是更新Apache到最新版本
當然,安裝Apache最新版本可能是你需要考慮的第一件事。
然而,可能是最近的改進或更正錯誤,這是添加到最近發佈的穩定版本,然後可以下載和安裝從原始程式碼。這裡還提供了編譯和安裝的指令-請記住,如果你選擇此更新方法,你可以備份你當前的設定檔/網站/虛擬主機作為一個預防措施。
無論如何,你可以檢查到目前為止安裝的版本如下:
建議2:如果您使用2.4以上的覈心,請考慮更新
為什麼呢?在內核2.4及以上系統調用sendfile的版本是默認的。這,反過來,方便高效的網絡檔案傳輸(使用較少的中央處理機同時進行閱讀和發送操作。
你可以通過以下管道查看您安裝的覈心:
# uname -r
並把它與最穩定的核在www.kernel.org。
建議3:選擇一個多處理模塊)MPM,這是最適合你的情况。
實際上,MPM增强了Apache的模組化功能,讓你决定如何配寘Web服務器連接到網絡埠的汽車,接受客戶的請求,並使用副程式)和流動(另一種管道)來處理這些請求。
從版本2.4,Apache提供了三個不同的MPM選擇取決於你的需要:
- 前MPM使用多個子過程沒有流量。每個過程處理一個連接一次而不是為每個人創建一個單獨的線程。沒有更多的細節,我們可以說,你只想使用這個MPM調試應用程序使用,或者,如果你的應用程序需要處理的不是流-安全模塊,如mod.u php。
- Worker MPM使用多個線程的子過程,其中每個線程處理一次一個連接。這是一個很好的選擇,為高流量服務器,因為它可以處理更多的同時,與以前的情况相比,記憶體較少的連接。
- 最後,event MPM是MPM默認在大多數Apache設定的版本2.4以上。它看起來像一個工作的MPM,它也為每個副程式創建多個線程,但有一個優勢:它使keepAlive或空的連接)而他們仍然是在這種情況下)通過一個流處理,釋放記憶體,這可能是不同的流量。本MPM不適合使用非流水型模塊,如mod.u php,而不是用PHP-FPM代替。
檢查你的Apache設備使用的MPM,你可以做的:
下麵的影像顯示,這個特定的Web服務器使用prefork MPM。
為了改變這一點,你需要編輯:
在mpm可以是mpm u event,mpm.u
LoadModule mpm_event_module modules/mod_mpm_event.so
說明你可能需要安裝libpache2-mod-fastcgi從付費存儲庫。
此外,為中心,你將需要php-fpm)與fcgi和mod \ u fcgid,而在Debian,它被稱為php5-fpm)與apache 2-mpm-event。
最後但並非最不重要的是:重新啟動Web服務器和最近安裝的php-fpm服務)或php5-fpm:
RedHat Center
Debian/Ubuntu
# systemctl restart apache2 php5-fpm & systemctl enable apache2 php5-fpm
雖然你可以配寘Apache使用一個特定的MPM,這個配寘可以重新定義為每個虛擬主機如前所示。
只需將相應的標籤放置在每個虛擬主機的設定檔中,你準備好了工作,但要確保你只使用一個MPM到虛擬主機。
最後,請注意,無論你選擇的分佈,php-fpm取決於fastcGI的實現,所以我建議安裝更多的套裝軟體之前。更詳細的資訊和例子的php-fpm,以及如何與MPM事件可以提高Apache效能,請參閱官方檔案。
這就是我所看到的,當我改變了MPM的默認情况下,在同一個視窗中的事件,在以前的影像:
例如:
我之所以提出這個問題,是因為我最近遇到了一個問題,當firewalld配寘設定在雲VPS默認不允許php-fpm和Apache處理php-file。
作為一個基礎測試),我相信你可以考慮更複雜或應力,我將創建一個php檔案。檢查是否有另一個檔名為test.php在同一資料夾中的兩個主機名為Cenos 7具有相同的設備和下載效能,但與其他的MPM。其中一個將使用事件,另一個將使用prefork:
這是我在一個檔名為checkifilexists.php保存的php程式碼:
?php
$filename = 'test.php';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?
然後我們運行一個Apache測試工具(AB)從200個同時請求到2000個請求:
# ab -k -c 100 -n 2000 localhost/checkiffileexists.php
讓我們開始測試,比較結果。請注意效能統計:
正如你所看到的,服務器的效能大大超過了它的類比prefork在所有方面的測試。
建議4。為Apache合理分配記憶體
也許需要考慮的最重要的硬體要素是分配給每一個Apache流程的ODS數量。雖然你不能直接控制它,你可以通過maxrequestWorkers限制副程式的數量)(以前被稱為maxclients Apache 2.2)限制使用Apache限制。再次,你可以設定這個值為每個主機或虛擬主機。
為此,你必須注意Apache使用的平均記憶體量,然後乘以maxrequestWorkers,這是記憶體量,為Apache程式選擇。有一件事你永遠不想讓你的Web服務器開始使用swap,因為它會大大降低其效能。囙此,你必須始終保持Apache的記憶體在你可以負擔得起的範圍內,不依賴swap。
例如,下一組將限制同時處理30個客戶。如果有更多的客戶進入主機,他們可能會遇到延遲或短期故障,這是很容易通過更新瀏覽器解决的。雖然這可能被認為是不受歡迎的,這是有用的服務器,並最終,最適合你的網站。
請注意,同樣的原則適用於所有的MPM-我在這裡使用的事件,以繼續以前的理事會提出的概念:
IfModule mpm_event_module
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 30
MaxConnectionsPerChild 1000
/IfModule
在任何情况下,強烈建議聯系Apache 2.4檔案,看看什麼指令是允許你選擇的MPM。
建議5。瞭解你的應用程序
通常不應該加載任何Apache模塊,這是不是你的應用程序的嚴格必要的。這將需要至少對您的服務器上運行的應用程序的一般知識,特別是如果你是一個系統管理員和另一個團隊負責開發。
你可以列出當前加載的挿件:
另一方面,Debian提供了一個工具稱為a2dismod禁用模塊,使用如下:
# a2dismod module_name
# a2enmod module_name
無論如何,別忘了重新啟動Apache使更改生效。
謝謝您抽出時間來閱讀這篇文章!
如果有任何問題,請在評論中提出來。
訂閱我們的部落格更新,並保持世界新聞的資訊通信!
為了瞭解更多和更多的資訊和通信技術人群的知識,寫上Cisco課程,網路安全課程,完整的網路安全課程,(DevNet課程)(可程式設計網絡)奧塔卡德米Cisco,Linux專業機构平臺SEDICOMM大學)課程。
思科和Linux的就業課程!
快點申請!有幾個座位。這些小組分別於7月22日和8月19日、9月23日、10月21日、11月25日、12月16日、1月20日和2月24日開始工作。
你會得到什麼?
- 幫助我們成為網路管理的專家,並獲得Cisco CCNA Routing&Switzerland或Linux LPI國際證書。
- 我們提供了一個經過驗證的程式和專家手册從思科網路學院和Linux專業學院,認證的培訓員和個人導師。
- 我們幫助你找到工作,讓你的事業。我們的畢業生有100%的工作。
你的學習如何?
- 在我們的平臺或在基輔辦事處學習。
- 我們問您關於實習時間方便的問題
- 如果你想要一個單獨的時間表,我們可以討論和實現。
- 我們展示了一個清晰的祖父的自我組織。個人導師將進行溝通,回答問題,提出建議,並說明遵守考試時間表的理由。
我們還可以幫助你:
- 2.編輯摘要;
- 準備科技採訪;
- 準備競爭中喜歡的空缺;
- 我們將在Cisco Incubator,New Graduate和Experienced的工作。我們的學生已經在那裡工作:點擊我們的Cisco連絡人。
在Cisco CCNA Routing&Switching和Linux LPI課程學習,申請或免費諮詢。