【问题标题】:Apache disabling mpm_prefork error: The following modules depend on mpm_prefork and need to be disabled first: php7.3Apache禁用mpm_prefork报错:以下模块依赖于mpm_prefork,需要先禁用:php7.3
【发布时间】:2020-04-10 01:47:58
【问题描述】:

我在 digitalocean 上有一个 8GB 的​​水滴。我们今天推出了我们的网站,获得了巨大的流量,我们有大约 3000 名并发用户。

我试图提高并发连接的数量(在 apache2buddy 的建议下),但建议 MaxRequestWorkers 为 482。这是文件:

<IfModule mpm_prefork_module>
        ServerLimit             482
        StartServers              5
        MinSpareServers           5
        MaxSpareServers          10
        MaxRequestWorkers         482
        MaxConnectionsPerChild   0
</IfModule>

Apache2 使用 mdm_prefork,我们已经了解到如果我们使用 mdm_worker 会更好。

所以我尝试禁用 mdm_prefork,以便启用 mdm_worker:

 a2dismod mpm_prefork

我收到以下错误:

ERROR: The following modules depend on mpm_prefork and need to be disabled first: php7.3

我必须做什么才能启用 mpm_worker?

【问题讨论】:

    标签: apache2 scalability apache2.4


    【解决方案1】:

    我在我的 ubuntu 服务器上找到了解决此问题的可能解决方案,不知道您是否也在运行 ubuntu,但我觉得我所采取的步骤对于几乎所有更改的发行版都是相同的您需要安装新软件包的 1 个步骤,并且该命令可能会根据您使用的发行版而改变。

    所以第一步是

    $ sudo a2dismod php7.3 mpm_prefork
    

    这将禁用 prefork 模块,但在此之前它将禁用 php7.3 模块以阻止发生依赖错误。

    接下来,我们启用工作模块

    $ sudo a2enmod mpm_worker
    

    现在,输出会建议您重新启动 apache 网络服务器。所以,我们也这样做

    $ sudo systemctl restart apache2
    

    现在,如果您去检查您的网站主页,它可能会引发错误或加载空白页面。

    那么,我们如何解决这个问题;我搜索了多个社区论坛并找到了一个与此相关的解决方案,但它是针对 freebsd platform 的,因此在 ubuntu 上尝试了相同的方法,但需要在 ubuntu 端进行一些调整才能使步骤正常工作。

    基于ubuntu操作系统的解决方案:

    首先,我们启用代理、proxy_fcgi 和 setenvif 模块,然后安装对应您的 php 版本的 php-fpm 包

    $ sudo a2enmod proxy
    $ sudo a2enmod proxy_fcgi
    $ sudo a2enmod setenvif
    $ sudo apt-get install php7.3-fpm -y
    

    php7.3-fpm 安装命令是您可能需要根据您使用的发行版检查安装步骤的命令。

    一旦安装了 php-fpm 服务,你需要确保它被启用然后启动它,这样就可以了

    $ sudo a2enconf php7.3-fpm
    $ sudo systemctl enable php7.3-fpm.service
    $ sudo systemctl start php7.3-fpm.service
    

    一旦php-fpm服务启动成功,只需重启apache服务以确保所有更改正常生效

    $ sudo systemctl restart apache2
    

    完成这些步骤后,请检查/刷新您的网站主页,错误页面或空白页面将更改为正确的网站页面。

    最终结果;您的网站已从使用 prefork 模块转为使用工作模块来处理请求。

    另外,如果你想切换到事件模块而不是工作模块;只需在第二步中启用事件模块代替工作模块;禁用 php7.3 和 prefork 模块后您将使用的那个

    替换

    $ sudo a2enmod mpm_worker
    

    $ sudo a2enmod mpm_event
    

    之后的所有步骤都保持不变,无论是否启用工作程序或事件模块。

    这些步骤帮助我在服务器上从 prefork 模块切换到工作模块,因此希望它可以帮助您并帮助其他偶然发现此问题的人。

    【讨论】:

    • 非常感谢。它适用于 ubuntu 16 LTS 版本。更改为 mpm_worker 后,我可以看到性能提升。非常感谢您详细分享。
    猜你喜欢
    • 2018-10-28
    • 2020-11-29
    • 2016-07-20
    • 2020-04-07
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多