使用 mpm_prefork 充分利用 Apache 服务器。
Apache 网络服务器是这个星球上最受欢迎的服务器之一。开箱即用,Apache 在处理平均流量方面做得相当扎实。但是,一旦你开始以高于平均负载的负载来攻击它,在某些情况下,如资源容量和所服务网站的复杂性,您可能会发现它有点困难。如果这描述了您所经历的情况,则多处理模块 (MPM) 预叉模块可能已按顺序排列。
MPM Prefork 模块使用单个控制过程,负责启动子进程。这些子进程侦听连接,并在它们到达时提供服务。MPM Prefork 是自我调节的,因此,除非您需要更大的开销,否则几乎没有理由调整其默认配置。但是,您确实需要启用此模块,因为它已开箱即用。
我将向您展示如何在 Apache 上启用 MPM Prefork 模块。我将在 Ubuntu 服务器 18.04 上演示。
启用此模块所需的唯一功能是:
Ubuntu 服务器 18.04 的运行实例
Apache 安装并运行
具有 sudo 权限的用户
网络连接
最有可能的是,mpm_prefork 模块已安装在 Apache 实例上。但是,开箱即用,它未启用。
Apache2 支持前叉和工位。这些都是MMP,但彼此大不相同。前叉模块在启动时创建多个子进程,每个子进程仅处理一个线程。相反,辅助角色使用子进程,每个进程生成多个线程,每个线程都准备好接受新请求。尽管前叉需要更多的 RAM,但它是最安全的模块,在使用非线程安全库时应采用。
要检查预叉模块是否加载,请发出以下命令:
apache2ctl -M | grep prefork
如果看不到任何结果,则未加载预分叉。在加载它之前,您必须首先卸载 mpm_event 模块,因为它们会发生冲突。要卸载 mpm_event,请发出以下命令:
sudo a2dismod mpm_event
使用以下命令重新启动 Apache:
sudo systemctl restart apache2
现在,您可以使用以下命令加载 mpm_prefork:
sudo a2enmod mpm_prefork
再次,重新启动 Apache 与命令:
sudo systemctl restart apache2
在 Web 服务器确实需要大量开销的偶然性时,您可以对前叉配置进行调整。为此,发出以下命令:
sudo nano /etc/apache2/mods-available/mpm_prefork.conf
在该文件中,您将看到以下选项:
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0
如果您知道服务器负载较大(并且有 RAM 要备用),则可能需要大幅提高这些数字,则可以更改该配置,如下所示:
StartServers 4 MinSpareServers 3 MaxSpareServers 40 MaxRequestWorkers 200 MaxConnectionsPerChild 10000
请务必根据硬件可以处理的内容和预期负载来编辑这些数字。保存并关闭文件。使用以下命令重新启动 Apache:
sudo systemctl restart apache2
此时,启用并配置了 mpm_prefork。如果您有兴趣对此进行测试,可以运行 Perl 脚本。执行此操作时请谨慎使用,因为它是 Perl 脚本,您永远不会知道。事实上,您可能需要先下载脚本并对其进行梳理(检查是否有任何恶意代码)。
使用以下命令下载
脚本:
wget https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl
一旦您浏览了它,发现它值得信任,运行命令:
sudo perl apache2buddy.pl
命令完成后,您应该会看到 Apache 内存使用情况的报告 (图 A)。
图 A
在那里,你有它。Apache mpm_prefork 正在做它的事情。请务必调整您的配置,以最好地满足您的环境需求,此模块将很好地为您服务。
评论专区