以下是最佳化apache伺服器效能的五個技巧:
(學習影片分享:程式設計影片)
一、始終將Apache更新到其最新版本
毫無疑問,安裝最新版本的Apache可能是您需要考慮的第一件事。截至2015年11月19日,CentOS 7儲存庫中最新版本的Apache 為2.4.6,而Debian中的最新版本為2.4.10。
但是,最近可能會有一個改進或錯誤修復添加到新發布的穩定版本中,然後可以從原始程式碼下載和安裝。這裡還提供了編譯和安裝說明- 請記住,如果選擇此更新方法,則可能需要備份當前設定檔/網站/虛擬主機作為預防措施。
可以如下檢查目前安裝的版本:
# httpd -v [基于RedHat / CentOS的系统] # apache2 -v [基于Debian / Ubuntu的系统]
#根據經驗,除非沒有其他方法,否則請堅持使用所選發行版的包管理器提供的更新方法(yum update httpd或aptitude safe-upgrade apache2,分別用於CentOS或Debian)。
二、如果您使用的是早於2.4的內核,請考慮立即升級
為什麼?核心版本2.4及更高版本預設啟用sendfile核心系統呼叫。反過來,這有助於高效能網路檔案傳輸(在Web伺服器- 客戶端通訊的上下文中需要),並透過執行同時讀取和發送操作,使Apache能夠更快地提供靜態內容並降低CPU利用率。
可以使用以下指令查看目前安裝的核心:
# uname -r
#雖然這是一個不適合初學者的過程,但升級核心是一項有趣的練習,可以了解有關Linux內部的更多資訊。
三、選擇最適合您情況的多處理模組(MPM)
實際上,MPM透過允許您決定如何配置Web伺服器以綁定到電腦上的網路端口,接受來自客戶端的請求以及使用子進程(以及線程,或)來處理此類請求,從而擴展了Apache的模組化功能。
從版本2.4開始,Apache提供三種不同的MPM供您選擇,取決於您的需求:
該preforkMPM使用多個子進程,不必穿線。每個行程一次處理一個連接,而不為每個行程建立單獨的執行緒。在沒有詳細說明的情況下,我們可以說,只有在偵錯使用或應用程式需要處理非線程安全模組(如mod_php)的應用程式時,才會使用此MPM。
該workerMPM使用每個子程序,每個執行緒處理一次一個連接多個執行緒。對於高流量伺服器來說,這是一個不錯的選擇,因為它允許使用比前一種情況更少的RAM來處理更多的並發連線。
最後,eventMPM是2.4版及更高版本的大多數Apache安裝中的預設MPM。它類似於worker MPM,它還為每個子進程創建多個線程但有一個優點:它導致KeepAlive或空閒連接(當它們保持在該狀態時)由單個線程處理,從而釋放可以釋放的記憶體被分配給其他線程。此MPM不適合與非線程安全模組(如mod_php)一起使用,必須使用替換此類PHP-FPM。
要檢查Apache安裝所使用的MPM,您可以執行以下操作:
# httpd -V
下圖顯示此特定Web伺服器正在使用prefork MPM。
要更改此設置,您需要編輯:
/etc/httpd/conf.modules.d/00-mpm.conf [基於RedHat / CentOS的系統]
/etc/apache2/mods -available/ load [基於Debian / Ubuntu的系統]
其中可以是mpm_event,mpm_worker或mpm_prefork。
並取消註解載入所需模組的行,如下所示:
#LoadModule mpm_event_module modules/mod_mpm_event.so
已修改為:
LoadModule mpm_event_module modules/mod_mpm_event.
#雖然您可以將Apache設定為使用特定的MPM,但可以按照前面所述的相同方式在每個虛擬主機的基礎上覆寫該配置。
只需将相应的标签放入每个虚拟主机的配置文件中即可开始使用 - 但请确保每个虚拟主机使用一个且只有一个MPM。
最后,请注意,无论您选择的发行版如何,php-fpm都依赖于FastCGI的实现,这就是为什么我之前推荐了额外的软件包安装的原因。
有关php-fpm的更多详细信息和示例以及它如何与事件MPM一起提高Apache的性能,您应该参考官方文档。
这是我在上一张图片所示的同一个框中将默认MPM从prefork更改为event后所看到的:
在CentOS 7中,您需要确保通过防火墙启用了http和https服务,并且网络接口已正确添加到默认区域。
例如:
# firewall-cmd --zone = internal --add-interface = tun6to4
# firewall-cmd --zone = internal --add-interface = tun6to4 --permanent
# firewall-cmd --set-default-zone = internal
# firewall-cmd --add-service = http
# firewall-cmd --add-service = https
# firewall-cmd --add-service = http --permanent
# firewall-cmd --add-service = https --permanent
# firewall-cmd --reload
我提出这个问题的原因是因为我最近遇到了一个问题,即云VPS 中的默认firewalld配置设置阻止了php-fpm和Apache处理php文件。
作为一个基本的测试(我相信你可以想到更复杂或更紧张的),我将创建一个php文件,检查是否存在另外test.php两个CentOS 7服务器的同一目录中具有相同硬件特性和负载的文件但是与不同的MPM。其中一个将使用事件,另一个将使用prefork:
这是我保存到名为的文件的PHP代码checkiffileexists.php:
$ filename =‘test.php’;
if(file_exists($ filename)){
echo“文件$ filename存在”;
} else {
echo“文件$ filename不存在”;
}
?>
然后我们将运行Apache基准测试工具(ab),同时发出200个请求,直到2000个请求完成:
# ab -k -c 100 -n 2000 localhost/checkiffileexists.php
让我们运行测试并比较结果。注意性能统计:
正如您所看到的,带有事件的服务器的性能在此测试的每个方面都高于其prefork对应物。
四、明智地为Apache分配RAM
也许最重要的硬件项是要为每个Apache进程分配的RAM量。虽然您无法直接控制它,但您可以通过MaxRequestWorkers指令(以前在Apache 2.2中称为MaxClients)限制子进程的数量,这将限制Apache对RAM的使用。同样,您可以在每个主机或每个虚拟主机的基础上设置此值。
要做到这一点,你应该注意Apache使用的平均RAM量,然后乘以MaxRequestWorkers的数量,这就是为Apache进程分配的内存量。您从不希望Web服务器做的一件事是开始使用swap,因为这会显着降低其性能。因此,您应始终将Apache的RAM使用限制在您能够承受的范围内,并且永远不要依赖交换。
例如,以下块将同时客户端的数量限制为30。如果有更多客户端访问主机,他们可能会遇到延迟或暂时故障,可以通过刷新浏览器轻松解决。虽然这可能被认为是不合需要的,但它对于服务器来说更健康,从长远来看,对您的网站也是最好的。
您可以将此块放在内部,/etc/httpd/conf/httpd.conf或者/etc/apache2/apache2.conf取决于您使用的是CentOS还是Debian。
请注意,同样的原则适用于所有MPM - 我在此处使用事件继续前面提示中概述的概
五、了解您的应用程序
根据经验,您不应加载任何非严格需要的Apache模块才能运行。这至少需要了解服务器上运行的应用程序的全部知识,特别是如果您是系统管理员并且还有另一个负责开发的团队。
您可以列出当前加载的模块:
# httpd -M [基于RedHat / CentOS的系统] # apache2ctl -M [基于Debian / Ubuntu的系统]
要卸载/禁用CentOS中的模块,您需要注释掉以LoadModule开头的行(在主配置文件中或在/etc/httpd/conf.modules.d中的辅助文件中)。
另一方面,Debian提供了一个名为a2dismod的工具来禁用模块,其用法如下:
# a2dismod module_name
要启用它:
# a2enmod module_name
在任何一种情况下,请记住重新启动Apache以使更改生效。
總結
在本文中,我們回顧了5個技巧,這些技巧將幫助您調整Apache Web伺服器並提高其效能。此外,您應該記住,沒有安全性的最佳化和效能是沒有意義的,因此您可能需要參考安裝mod_pagespeed來改進Web伺服器效能以及Tecmint.com中的Apache強化技巧文章。
相關推薦:apache教學
以上是5個優化apache伺服器效能的技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

ApacheHTTPServer因其模塊化設計、高度可擴展性、安全性和性能優化成為Web服務器領域的領導者。 1.模塊化設計通過加載不同模塊支持各種協議和功能。 2.高度可擴展性適應從小型到大型應用的需求。 3.安全性通過mod_security和多種認證機制保護網站。 4.性能優化通過數據壓縮和緩存提升加載速度。

ApacheHTTPServer在現代Web環境中依然重要,因為其穩定性、可擴展性和豐富的生態系統。 1)穩定性和可靠性使其適用於高可用性環境。 2)廣泛的生態系統提供豐富的模塊和擴展。 3)易於配置和管理,即使初學者也能快速上手。

Apache成功的原因包括:1)強大的開源社區支持,2)靈活性和可擴展性,3)穩定性和可靠性,4)廣泛的應用場景。通過社區的技術支持和共享,Apache提供了靈活的模塊化設計和配置選項,確保了其在各種需求下的適應性和穩定性,廣泛應用於從個人博客到大型企業網站的不同場景。

Apachebecamefamousduetoitsopen-sourcenature,modulardesign,and strongcommunitysupport.1)ITSOPEN-SOPEN-SOURCEMODELANDELANDPERMISSIVEPEPEPIRENESENESCORENDECERAGEDWIDEDWIDESPREADADOPTION.2)tHEMODECTURALACTARACTIOLARACTURARACTURARACTURARACTURARACTERTURELALARTARACTEXIVEDEDENEXIVECUSTOMASTACTOPATAPATATSICATS.3)

Apache的性能和靈活性使其在Web服務器中脫穎而出。 1)性能優勢體現在高效處理和可擴展性,通過多進程和多線程模型實現。 2)靈活性源於模塊化設計和配置的靈活性,允許根據需求加載模塊並調整服務器行為。

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境