【问题标题】:How to limit PHP's total memory usage across apache如何限制 PHP 在 apache 中的总内存使用量
【发布时间】:2020-07-06 09:52:43
【问题描述】:

所以,我和我的同事都找不到我们问题的答案。我们如何限制 PHP 在 apache 上的总内存使用量?

我们在 AWS 上的一个 EC2 实例上运行 CakePHP 2.x,该实例有 15GB 内存。我知道在 php.ini 文件中有一个 memory_limit={GB/MB} 根据 PHP docs 限制任何单个脚本可以使用的内存量。那么我们如何在整个 PHP 上启用这种相同类型的限制呢?我们在 Apache 2.4 上运行 PHP v5.4。任何帮助将不胜感激!

【问题讨论】:

  • 一点也不。正如您已经发现的那样,PHP 以脚本方式使用内存。但是你可以限制 apache 同时执行特定数量的 PHP 脚本。
  • 你知道怎么做吗@MarkusZeller ?
  • 不可能。但一个想法是启动一个资源有限的 docker 容器并调用其中的所有 php。

标签: php apache cakephp memory-management cakephp-2.x


【解决方案1】:

这主要取决于你的逻辑,如果有一个特定的代码块你需要分配更多的内存来处理。 有两种方式。

【讨论】:

    【解决方案2】:

    哦,我明白了。你不能用 php 语言做到这一点。您将不得不限制 apache 服务器内存。同样我也不可能。但是您可以优化您的服务器 CPU 使用率(进程和线程数)并使用 php.ini memory_limit = 128M 这将限制每个进程的内存使用量。

    您可以编辑您的 conf\extra\httpd-mpm.conf 并对其进行管理:

    # prefork MPM
    
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which are kept spare
    # MaxSpareServers: maximum number of server processes which are kept spare
    # MaxRequestWorkers: maximum number of server processes allowed to start
    # MaxConnectionsPerChild: maximum number of connections a server process serves
    
    # before terminating
    <IfModule mpm_prefork_module>
        StartServers             5
        MinSpareServers          5
        MaxSpareServers         10
        MaxRequestWorkers      250
        MaxConnectionsPerChild   0
    </IfModule>
    

    希望对你有帮助

    【讨论】:

    • 你好,这不是很有用,因为我说过那个设置不能满足我们的需要。
    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2012-09-05
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多