首页 运维 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的系统]
登录后复制

4a6af309c695a60b7d23cc10e3c4b7a.png

根据经验,除非没有其他方法,否则请坚持使用所选发行版的包管理器提供的更新方法(yum update httpd或者aptitude safe-upgrade apache2,分别用于CentOS或Debian)。

二、如果您使用的是早于2.4的内核,请考虑立即升级

为什么?内核版本2.4及更高版本默认启用sendfile内核系统调用。反过来,这有助于高性能网络文件传输(在Web服务器 - 客户端通信的上下文中需要),并通过执行同时读取和发送操作,使Apache能够更快地提供静态内容并降低CPU利用率。

可以使用以下命令查看当前安装的内核:

# uname -r
登录后复制

cc81b2ae7f95ae2a346725883f0049a.png

虽然这是一个不适合初学者的过程,但升级内核是一项有趣的练习,可以了解有关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。

47d424ef608413d6d8a6ac8b926f112.png

要更改此设置,您需要编辑:

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

注意:要使事件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 apache2 php5-fpm

虽然您可以将Apache设置为使用特定的MPM,但可以按照前面所述的相同方式在每个虚拟主机的基础上覆盖该配置。

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

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

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

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

319a59fb7c65dd1d63610e03ed28e9b.png

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

e47b3221c26dda3fa3e299b9c82ea55.png

这是我保存到名为的文件的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

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

d0d45fd99cb7fee1d577cdbdd766a1c.png

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

c4f7572390cdefb5d82faef55557ce2.png

五、了解您的应用程序

根据经验,您不应加载任何非严格需要的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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

apache中cgi目录怎么设置 apache中cgi目录怎么设置 Apr 13, 2025 pm 01:18 PM

要在 Apache 中设置 CGI 目录,需要执行以下步骤:创建 CGI 目录,如 "cgi-bin",并授予 Apache 写入权限。在 Apache 配置文件中添加 "ScriptAlias" 指令块,将 CGI 目录映射到 "/cgi-bin" URL。重启 Apache。

如何在服务器端设置字符编码以解决Bootstrap Table乱码 如何在服务器端设置字符编码以解决Bootstrap Table乱码 Apr 07, 2025 pm 12:00 PM

要在服务器端设置字符编码以解决 Bootstrap Table 乱码,需要按以下步骤进行:检查服务器字符编码;编辑服务器配置文件;设置字符编码为 UTF-8;保存并重启服务器;验证编码。

apache怎么启动 apache怎么启动 Apr 13, 2025 pm 01:06 PM

启动 Apache 的步骤如下:安装 Apache(命令:sudo apt-get install apache2 或从官网下载)启动 Apache(Linux:sudo systemctl start apache2;Windows:右键“Apache2.4”服务并选择“启动”)检查是否已启动(Linux:sudo systemctl status apache2;Windows:查看服务管理器中“Apache2.4”服务的状态)启用开机自动启动(可选,Linux:sudo systemctl

如何检查Debian OpenSSL配置 如何检查Debian OpenSSL配置 Apr 12, 2025 pm 11:57 PM

本文介绍几种检查Debian系统OpenSSL配置的方法,助您快速掌握系统安全状态。一、确认OpenSSL版本首先,验证OpenSSL是否已安装及版本信息。在终端输入以下命令:opensslversion若未安装,系统将提示错误。二、查看配置文件OpenSSL主配置文件通常位于/etc/ssl/openssl.cnf。您可以使用文本编辑器(例如nano)查看:sudonano/etc/ssl/openssl.cnf此文件包含密钥、证书路径及加密算法等重要配置信息。三、利用ope

apache怎么删除多于的服务器名 apache怎么删除多于的服务器名 Apr 13, 2025 pm 01:09 PM

要从 Apache 中删除多余的 ServerName 指令,可以采取以下步骤:识别并删除多余的 ServerName 指令。重新启动 Apache 使更改生效。检查配置文件验证更改。测试服务器确保问题已解决。

如何利用Debian Apache日志提升网站性能 如何利用Debian Apache日志提升网站性能 Apr 12, 2025 pm 11:36 PM

本文将阐述如何通过分析Debian系统下的Apache日志来提升网站性能。一、日志分析基础Apache日志记录了所有HTTP请求的详细信息,包括IP地址、时间戳、请求URL、HTTP方法和响应代码等。在Debian系统中,这些日志通常位于/var/log/apache2/access.log和/var/log/apache2/error.log目录下。理解日志结构是有效分析的第一步。二、日志分析工具您可以使用多种工具分析Apache日志:命令行工具:grep、awk、sed等命令行工具可

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://&lt;服务器IP或域名&gt;/server-status)或查看 Apache 配置文件(ServerVersion: Apache/&lt;版本号&gt;)。

See all articles