Различия
Показаны различия между двумя версиями страницы.
| linux:apache:apache_oom [2019/01/22 16:39] – создано - внешнее изменение 127.0.0.1 | linux:apache:apache_oom [2023/11/03 19:07] (текущий) – dx | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Ошибка httpd prefork invoked oom killer или почему падает Apache? ====== | ||
| + | Ссылки по теме настроек Apache | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * http:// | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | TL;DR не использовать дефолтные настройки Apache (MaxClients 256 на сервере с 1 ГБ RAM прямой путь к OOM). Совет [[linux: | ||
| + | |||
| + | Итак, начинаем с подсчёта потребления памяти одним процессом Apache. В этом нам поможет [[linux: | ||
| + | |||
| + | < | ||
| + | # ps_mem | ||
| + | | ||
| + | 2.0 MiB + 97.0 KiB = 2.1 MiB | ||
| + | 14.5 MiB + 6.7 MiB = 21.2 MiB nginx (5) | ||
| + | 7.2 MiB + 26.4 MiB = 33.6 MiB httpd (44) | ||
| + | 327.9 MiB + 271.5 KiB = 328.2 MiB | ||
| + | --------------------------------- | ||
| + | 577.0 MiB | ||
| + | ================================= | ||
| + | </ | ||
| + | |||
| + | Не забываем, | ||
| + | |||
| + | У нас 44 процесса Apache, общее потребление памяти 328 МБ, а один процесс занимает 26 МБ ([[linux: | ||
| + | |||
| + | Округлим 26 МБ до 32 для удобства восприятия. В итоге формула получается такая: Объём RAM минус резерв для MySQL минус резерв для других процессов и всё это делим на память одного процесса Apache. | ||
| + | |||
| + | То есть: (4096 - 1024 - 512) / 32 = 80 | ||
| + | |||
| + | MaxClients и ServerLimit можем поставить равным 80. Естественно эта формула очень условная и надо учитывать особенности конкретной системы. | ||
| + | |||
| + | Есть также замечательные скрипты, | ||
| + | |||
| + | Первый скрипт работает с Apache 2.2. Второй для Apache 2.4 | ||
| + | |||
| + | **Важное замечание** по опции [[http:// | ||
| + | |||
| + | //Setting MaxRequestsPerChild to a non-zero limit solves some memory-leakage problems caused by sloppy programming practices and bugs, whereby a child process consumes a little more memory after each request. In such cases, and where the directive is left unbounded, after a certain number of requests the children will use up all the available memory and the server will die from memory starvation.// | ||
| + | |||
| + | И еще [[https:// | ||
| + | |||
| + | * StartServers: | ||
| + | * MinSpareServers: | ||
| + | * MaxSpareServers: | ||
| + | * MaxRequestWorkers = MaxClients | ||
| + | * MaxConnectionsPerChild= 10000 (To avoid problem with memory leaks in WordPress plugin themes and apps) | ||
| + | |||
| + | При существенной нагрузке в ''/ | ||
| + | |||
| + | Еще важный момент. В CentOS 6 настройки находятся в ''/ | ||
| + | |||
| + | И последнее замечание - если вы поменяли '' | ||
| + | |||
| + | < | ||
| + | |||
| + | или | ||
| + | |||
| + | < | ||
| + | |||
| + | Впрочем, | ||
| + | |||
| + | EOM | ||
| + | |||
| + | {{tag> | ||