导言
Apache HTTP 服务器由 Apache 软件基金会开发和维护,是一款免费的开源网络服务器,为全球 67% 的网站提供支持。它可靠、安全,可通过扩展和模块轻松定制,以满足多种不同环境的需求。
虽然 Nginx 是性能和效率爱好者的新宠,但 Apache 也能在各种实际情况下提供高性能。
依赖条件
- Linux 服务器(本文中 Ubuntu 演示)
- 访问 Apache 配置文件
- 最重要的:服务器备份
大多数 Apache 配置文件都存储在 /etc/apache2/apache2.conf 中。如果找不到 Apache 配置文件,请咨询 VPS 提供商/主机。
可以通过以 sudo 用户身份运行以下命令来访问:
在更改每个步骤中的值后,您还应通过运行重新启动 Apache:
缩短超时时间
超时设置是数据 “发送 “或 “接收”(从客户端发送或接收)超时前的秒数。
确定理想的超时值取决于流量习惯和托管应用程序。超时过长会给网站访问者带来问题,包括使他们等待网页加载的时间更长。超时过长还会使服务器更容易受到 SlowLoris 式的 DOS 攻击。
另一方面,超时过少会导致脚本比预期提前终止。关键是要在两极之间取得平衡。
对于资源有限的服务器,我倾向于保持 100-120 的水平,而对于资源一般的服务器,我倾向于保持 60 的水平。
调整 Apache 的 KeepAlive
将 KeepAlive 设置更改为开,Apache 将允许每个连接发出一个以上的请求。这对高流量服务器非常有益,因为它有可能显著提高性能。
如果您不确定您的主机, 请在 Apache 配置文件中查找 KeepAlive,并确保它处于开启状态。
调整 Apache 的 MaxAliveRequests
AliveRequests 属性设置每个连接接受请求的最大数量。
我喜欢将数值保持在 500。增加这个数值可能会提高服务器性能,但只能提高到一定程度,因为这取决于你的资源。
配置 KeepAliveTimeout 时限
KeepAliveTimeout 表示 Apache 在最终决定关闭连接之前等待连接发出新请求的秒数。一般来说,这个数字最好保持在较低水平。
要更改限制,请在配置文件中找到 KeepAliveTimeout 并更改其值。我喜欢将值保持在 3。
启用 GZIP 压缩
Apache 的 GZIP 压缩功能有助于提高网站速度和性能,还能在发送响应时通过压缩数据减少资源使用量。以 sudo 用户身份运行以下命令安装 GZIP 模块:
安装 GZIP 模块后,必须在 .htaccess 文件中启用 GZIP。为此,请运行以下命令打开 .htaccess 文件: 如果使用不同的网络根目录。并在文件中添加以下几行:
## Enable GZIP compression HTML, CSS, JS, Text, XML, fonts
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
</IfModule>
启用 MPM 事件
事件多处理模块(MPM)旨在同时处理更多请求。它通过将一些处理工作移交给监听线程来实现这一目的,从而释放工作线程来处理新请求。这有助于提高网站或应用程序的性能。
要启用 MPM,首先需要停止 Apache 和 PHP,并禁用预分叉。为此,请运行以下命令。
停用阿帕奇
$ sudo systemctl stop apache2
To stop PHP:
$ sudo a2dismod php8.1
(根据配置更改 PHP 版本)禁用预叉式 MPM 模块:
$ sudo a2dismod mpm_prefork
最后,启用事件 MPM 模块:
$ sudo a2enmod mpm_event
这样,Apache 服务器的 MPM 事件就启用了。如果您是 Webdock 用户,则无需担心这一步,因为默认情况下它已启用,就像上面的步骤一样。
如果遇到问题,请尝试使用 Worker 或 Prefork MPM。有些人发现使用 Prefork 或 Worker 性能更快,这取决于网站类型、CPU 占用率、内存占用率等。一般来说,对于需要快速为众多访问者提供服务的高性能服务器,我总是推荐使用 MPM Event。
结论
为大流量配置 Apache 可能很棘手,因为没有特定的值适用于所有网络服务器。在更改任何设置之前,您应该了解网络服务器的要求。各种参数的推荐值并不总是最佳值,而且只在特定情况下有效。
不过,它们可以为您提供一个很好的起点,让您根据自己的要求来管理这些值。您可以在进行测试时逐步增加这些值,以观察改进情况。
在启用任何新更改之前,必须先在暂存环境中进行测试。这样,你就能确保一切正常运行,并在出现任何问题时有一个备份计划。
如果看不到任何变化,最好保留默认值。