Ton*_*dis 2 scalability apache2 apache2.4
我在 digitalocean 上有一个 8GB 的 Droplet。我们今天推出了我们的网站,流量非常大,大约有 3000 名并发用户。
我尝试提高并发连接数(根据 apache2buddy 的建议),但建议的 MaxRequestWorkers 为 482。以下是文件:
<IfModule mpm_prefork_module>
ServerLimit 482
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 482
MaxConnectionsPerChild 0
</IfModule>
Run Code Online (Sandbox Code Playgroud)
Apache2 使用 mdm_prefork ,我们已经了解到使用mdm_worker会更好。
所以我尝试禁用 mdm_prefork,以便我可以启用 mdm_worker:
a2dismod mpm_prefork
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR: The following modules depend on mpm_prefork and need to be disabled first: php7.3
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能启用 mpm_worker?
小智 11
我在我的 ubuntu 服务器上找到了解决此问题的可能解决方案,不知道您是否也在运行 ubuntu,但我觉得我所采取的步骤对于几乎所有发行版都是相同的,只需一步更改即可您需要安装新的软件包,并且该软件包的命令可能会根据您使用的发行版而变化。
所以第一步是
$ sudo a2dismod php7.3 mpm_prefork
Run Code Online (Sandbox Code Playgroud)
这将禁用 prefork 模块,但在此之前它将禁用 php7.3 模块以阻止依赖错误发生。
接下来,我们启用worker模块
$ sudo a2enmod mpm_worker
Run Code Online (Sandbox Code Playgroud)
现在,输出会建议您重新启动 apache Web 服务器。所以,我们也做同样的事
$ sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
现在,如果您去检查网站主页,它可能会抛出错误或加载空白页面。
那么,我们如何解决这个问题?我搜索了多个社区论坛并找到了与此相关的解决方案,但它适用于freebsd 平台,因此在 ubuntu 上尝试了相同的解决方案,需要在 ubuntu 端进行一些调整才能使步骤正常工作。
基于ubuntu操作系统的解决方案:
首先,我们启用 proxy、proxy_fcgi 和 setenvif 模块,然后安装与您的 php 版本相对应的 php-fpm 包
$ sudo a2enmod proxy
$ sudo a2enmod proxy_fcgi
$ sudo a2enmod setenvif
$ sudo apt-get install php7.3-fpm -y
Run Code Online (Sandbox Code Playgroud)
php7.3-fpm 安装命令是您可能需要根据您使用的发行版检查安装步骤的命令。
一旦安装了 php-fpm 服务,您需要确保它已启用然后启动它,因此
$ sudo a2enconf php7.3-fpm
$ sudo systemctl enable php7.3-fpm.service
$ sudo systemctl start php7.3-fpm.service
Run Code Online (Sandbox Code Playgroud)
一旦 php-fpm 服务启动成功,只需重新启动 apache 服务即可确保所有所做的更改正确生效
$ sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
执行这些步骤后,请检查/刷新您的网站主页,错误页面或空白页面将更改为正确的网站页面。
最终结果;您的网站已从使用 prefork 模块转变为使用工作模块来处理请求。
另外,如果你想切换到事件模块而不是工作模块;只需在第二步中启用事件模块代替工作模块即可;禁用 php7.3 和 prefork 模块后您将采取的那个
代替
$ sudo a2enmod mpm_worker
Run Code Online (Sandbox Code Playgroud)
和
$ sudo a2enmod mpm_event
Run Code Online (Sandbox Code Playgroud)
无论启用工作模块还是事件模块,此后的所有步骤都保持不变。
这些步骤帮助我在服务器上从 prefork 模块切换到工作模块,因此希望它可以帮助您以及遇到此问题的其他人。
| 归档时间: |
|
| 查看次数: |
9696 次 |
| 最近记录: |