首頁 運維 Apache 5個優化apache伺服器效能的技巧

5個優化apache伺服器效能的技巧

Jan 05, 2021 am 10:03 AM
apache 伺服器

5個優化apache伺服器效能的技巧

以下是最佳化apache伺服器效能的五個技巧:

(學習影片分享:程式設計影片

一、始終將Apache更新到其最新版本

毫無疑問,安裝最新版本的Apache可能是您需要考慮的第一件事。截至2015年11月19日,CentOS 7儲存庫中最新版本的Apache 為2.4.6,而Debian中的最新版本為2.4.10。
但是,最近可能會有一個改進或錯誤修復添加到新發布的穩定版本中,然後可以從原始程式碼下載和安裝。這裡還提供了編譯和安裝說明- 請記住,如果選擇此更新方法,則可能需要備份當前設定檔/網站/虛擬主機作為預防措施。

可以如下檢查目前安裝的版本:

# httpd -v [基于RedHat / CentOS的系统]
# apache2 -v [基于Debian / Ubuntu的系统]
登入後複製

5個優化apache伺服器效能的技巧

#根據經驗,除非沒有其他方法,否則請堅持使用所選發行版的包管理器提供的更新方法(yum update httpd或aptitude safe-upgrade apache2,分別用於CentOS或Debian)。

二、如果您使用的是早於2.4的內核,請考慮立即升級

為什麼?核心版本2.4及更高版本預設啟用sendfile核心系統呼叫。反過來,這有助於高效能網路檔案傳輸(在Web伺服器- 客戶端通訊的上下文中需要),並透過執行同時讀取和發送操作,使Apache能夠更快地提供靜態內容並降低CPU利用率。

可以使用以下指令查看目前安裝的核心:

# uname -r
登入後複製

5個優化apache伺服器效能的技巧

#雖然這是一個不適合初學者的過程,但升級核心是一項有趣的練習,可以了解有關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。

5個優化apache伺服器效能的技巧

要更改此設置,您需要編輯:

/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.

LoadModule mpm_event_module modules/mod_mpm_event.

注意:要讓事件MPM在Debian中運作,您可能必須從非自由儲存庫安裝libapache2-mod-fastcgi套件。

另外,對於CentOS,你需要php-fpm(以及fcgi和mod_fcgid),而在Debian中它叫做php5-fpm(和apache2-mpm-event一起)。

最後,但並非最不重要的是,重新啟動Web伺服器和新安裝的php-fpm(或php5-fpm)服務:

在RedHat / CentOS上

# systemctl restart httpd php-fpm && systemctl enable httpd php-fpm

在Debian / Ubuntu上

# systemctl restart apache2 php5-fpm && systemctl enable pache2 php5-fpm

#雖然您可以將Apache設定為使用特定的MPM,但可以按照前面所述的相同方式在每個虛擬主機的基礎上覆寫該配置。

只需将相应的标签放入每个虚拟主机的配置文件中即可开始使用 - 但请确保每个虚拟主机使用一个且只有一个MPM。

最后,请注意,无论您选择的发行版如何,php-fpm都依赖于FastCGI的实现,这就是为什么我之前推荐了额外的软件包安装的原因。

有关php-fpm的更多详细信息和示例以及它如何与事件MPM一起提高Apache的性能,您应该参考官方文档。

这是我在上一张图片所示的同一个框中将默认MPM从prefork更改为event后所看到的:

5個優化apache伺服器效能的技巧

在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:

5個優化apache伺服器效能的技巧

这是我保存到名为的文件的PHP代码checkiffileexists.php:

<?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

让我们运行测试并比较结果。注意性能统计:

5個優化apache伺服器效能的技巧

正如您所看到的,带有事件的服务器的性能在此测试的每个方面都高于其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 - 我在此处使用事件继续前面提示中概述的概

5個優化apache伺服器效能的技巧

五、了解您的应用程序

根据经验,您不应加载任何非严格需要的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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++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教學
1668
14
CakePHP 教程
1426
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
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:15 PM

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

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

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

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怎麼配置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:21 PM

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

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

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

See all articles