Apache2性能优化

许多人使用 apache2 作为 Web 服务器。 然而,很少有人考虑优化其性能,这直接成比例地影响网站页面的加载速度、处理脚本(特别是php)的速度,以及CPU负载的增加和RAM使用量的增加。

因此,以下手册应该可以帮助初学者(而不仅仅是)用户。
以下所有示例均在 Raspberry PI 3、Debian 9、Apache 2.4.38、PHP 7.3 上使用。

所以,让我们开始吧。

1.禁用未使用的模块

第一种方法是简单地禁用不使用的模块:

可以使用以下命令查看当前使用的模块列表:

apache2ctl -M

要禁用该模块,请使用以下命令:

a2dismod *название модуля*

因此,要启用该模块,请使用以下命令:

a2enmod *название модуля*

使用时请注意 a2dismod,模块的名称必须不包含模块一词。

例如,如果您在命令的输出中 apache2ctl-M 见过 代理模块,然后要禁用它,您需要使用命令 - a2dismod代理

系统负载最多的模块(根据个人经验)是:

  • PHP、Ruby、Perl 等各种脚本语言的模块
  • SSL
  • 改写
  • CGI

因此,如果您不需要这些模块,我建议禁用这些模块。

另外,禁用任何模块后,我建议使用命令 - apache2ctl 配置测试,它将检查所使用站点的配置,如果它们需要任何禁用的模块,则会生成错误。

2.更改MPM(多处理模块)并使用php-fpm

默认情况下,安装后,apache2使用MPM Prefork(每1个连接1个线程),这显着降低了性能,但同时提高了稳定性和安全性。

但为了优化性能,我建议使用 MPM Worker,它允许您在每个连接上使用多个线程。

要启用它,我们使用以下命令:

a2dismod mpm_prefork  //Отключаем prefork
a2dismod php7.3  //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker  //Включаем worker

然而,在使用 Worker 时你可能会遇到问题,因为...... php7.3模块依赖于Prefork模块。

为了解决这个问题,让我们安装 php7.3-fpm 模块,它将用于运行 PHP 脚本:

apt-get update && apt-get install php7.3-fpm  //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Включаем модуль и конфиг для него

值得注意的是,使用 php-fpm 还会减少 apache2 进程使用的 RAM 量,并略微加快 PHP 脚本的处理速度。

3。 结论

因此,通过这些简单的操作,我们能够优化性能并减少机器的负载(在本例中为 RPI3)。

当然,还有数百个其他优化选项,例如启用压缩(这确实很有用,但大多数已默认启用)、更改 MPM 设置(配置文件)、禁用 HostnameLookups 等,但在本文中我尝试反思这些是对我帮助最大的点,也希望对其他人有帮助。

来源: habr.com

添加评论