Как ограничить общее использование памяти PHP через apache

Так что ни я, ни мой коллега не можем найти ответ на наш вопрос. КАК мы ограничиваем общее использование памяти PHP на apache?

Мы запускаем CakePHP 2.x на экземпляре EC2 на AWS, экземпляр имеет 15 ГБ памяти. Я знаю, что в файле php.ini есть memory_limit={GB/MB}, что согласно документам PHP ограничивает объем памяти, который может использовать один скрипт. Итак, как мы можем включить этот же тип ограничений для PHP в целом? Мы используем PHP v5.4 на Apache 2.4. Любая помощь будет принята с благодарностью!


person Rainier    schedule 06.07.2020    source источник
comment
Нисколько. Как вы уже выяснили, PHP использует память по сценарию. Но вы можете ограничить apache одновременным выполнением определенного количества PHP-скриптов.   -  person Markus Zeller    schedule 06.07.2020
comment
Ты знаешь, как это сделать, @MarkusZeller?   -  person Rainier    schedule 07.07.2020
comment
Это невозможно. Но идея заключалась бы в том, чтобы запустить контейнер докеров с ограниченными ресурсами и вызвать там весь php.   -  person Markus Zeller    schedule 07.07.2020


Ответы (2)


Это в основном зависит от вашей логики, если есть определенный блок кода, где вам нужно выделить больше памяти для обработки. Есть 2 способа.

  • memory_limit из php.ini
  • https://www.php.net/manual/en/function.ini-set.php
  • Проверьте и получите экземпляр EC2, который соответствует вашим потребностям / предлагает ваши требования к памяти.
person ronforever    schedule 06.07.2020

Ох, я понял. Вы не можете сделать это с языком php. Вам придется ограничить память сервера Apache. Как хорошо я не это возможно. Но вы можете оптимизировать использование ЦП вашего сервера (количество процессов и потоков) и использовать 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>

Надеюсь, поможет

person Edson Magombe    schedule 06.07.2020
comment
Привет, это не очень полезно, так как я сказал, что этот параметр не делает то, что нам нужно. - person Rainier; 07.07.2020