saytik
@saytik
Веб-разработчик

Апач размножается и перестает отдавать контент. Как лечить?

Сервер последние 3 дня стал падать, отдавая 502 ошибку спустя 2-3 часа. В логах httpd:
[Mon Jul 31 11:56:24 2017] [notice] Apache/2.2.15 (Unix) mod_fastcgi/2.4.6 mod_rpaf/0.6 PHP/5.3.29 configured -- resuming normal operations
[Mon Jul 31 11:56:25 2017] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Mon Jul 31 11:56:35 2017] [notice] caught SIGTERM, shutting down
[Mon Jul 31 11:56:36 2017] [notice] Apache/2.2.15 (Unix) mod_fastcgi/2.4.6 mod_rpaf/0.6 PHP/5.3.29 configured -- resuming normal operations
zend_mm_heap corrupted
[Mon Jul 31 12:31:19 2017] [notice] child pid 27463 exit signal Segmentation fault (11)
zend_mm_heap corrupted
zend_mm_heap corrupted
[Mon Jul 31 12:45:07 2017] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Mon Jul 31 13:18:16 2017] [notice] child pid 4921 exit signal Segmentation fault (11)
[Mon Jul 31 13:56:15 2017] [notice] child pid 32413 exit signal Segmentation fault (11)
zend_mm_heap corrupted
[Mon Jul 31 15:01:39 2017] [notice] caught SIGTERM, shutting down
[Mon Jul 31 15:01:40 2017] [notice] Apache/2.2.15 (Unix) mod_fastcgi/2.4.6 mod_rpaf/0.6 PHP/5.3.29 configured -- resuming normal operations
zend_mm_heap corrupted
zend_mm_heap corrupted
[Mon Jul 31 15:29:05 2017] [error] server reached MaxClients setting, consider raising the MaxClients setting
zend_mm_heap corrupted
[Mon Jul 31 16:00:09 2017] [notice] child pid 18382 exit signal Segmentation fault (11)
[Mon Jul 31 16:02:02 2017] [notice] child pid 17800 exit signal Segmentation fault (11)
[Mon Jul 31 16:19:12 2017] [notice] child pid 15365 exit signal Segmentation fault (11)
zend_mm_heap corrupted
[Mon Jul 31 16:33:11 2017] [notice] child pid 15653 exit signal Segmentation fault (11)


оперативки 64Гб на сервере, 30гб под mysql отдано.

Апач настроен так:
<IfModule mpm_prefork_module>
  StartServers       2
  MinSpareServers    2
  MaxSpareServers   20
  ServerLimit        32
  MaxClients         32
  MaxRequestsPerChild 1000
</IfModule>


Перезапускаешь httpd и все работает. Куда копать? Спасибо заранее
  • Вопрос задан
  • 494 просмотра
Пригласить эксперта
Ответы на вопрос 1
@RedSkotina
Копать в сторону MPM worker.
Если продолжать использовать prefork:
MaxCLients вычислить на основании наблюдений сколько в среднем потребляет каждый процесс, так чтобы MaxClients * AvgMemoryPerProcess < TotalFreeMemory
StartServers, MinSpareServers, MaxSpareServers,ServerLimit установить равным MaxClients
Это уберет форки новых процессов (Так ли вам необходимо уменьшать размер используемой памяти если запросов немного?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы