LINUX.ORG.RU
ФорумAdmin

Апач и сегфолты


0

1

Привет.

Сегфолтятся чайлды апача, 300 штук за сутки. Нужно понять, почему.

Я выбрал из access_log запросы, совпадающие по времени с временем ошибок сегментации, из ~600 запросов ~150 имеют вид «OPTIONS * HTTP/1.0» - такой запрос - часть создания апачем нового чайлда, верно?

Но это мне ничего не дает - т.к. не понятно, происходит ли сегфолт при создании нового чайлда или создание нового чайлда - следствие смерти старого чайлда из-за сегфолта.

Какие есть возможности выяснить причины ошибок сегментации?

Пока включил LogLevel debug и медитирую на лог с ошибками.

Спасибо.

Итак, сегфолт с [notice] я вижу, его причины с [debug] не вижу.
Куда дальше копать?

Frakhtan-teh ★★
() автор топика
Ответ на: комментарий от Frakhtan-teh

Ну вот ваше php и сегфолтится, а за собой утягивает чайлд апача. Показать логи сервера, на котором под тыщу сайтов с php-cgi?

Причину падений php надо искать отдельно. Если нагрузка небольшая, то можно и рискнуть и strace'ом воспользоваться.

leave ★★★★★
()
Ответ на: комментарий от leave

Посмотрел strace сдохшего не своей смертью child'а, даже нескольких.
Непосредственно перед sigsegv вызывают getpgrp(), а после этого сразу - ты-дыщь:

--- SIGSEGV (Segmentation fault) @ 0 (0) ---
chdir(«/etc/httpd») = 0
rt_sigaction(SIGSEGV, {SIG_DFL}, {0xb7f2a6e0, [SEGV], SA_RESTORER|SA_RESTART, 0xb7b1c048}, 8) = 0
kill(23664, SIGSEGV) = 0
sigreturn() = ? (mask now [])
--- SIGSEGV (Segmentation fault) @ 0 (0) ---

Еще одна общая черта - все чайлды на протяжении всей своей жизни пытаются сделать read какого-то одного участка памяти и все получают в ответ -1 EAGAIN (Resource temporarily unavailable). При каждом новом запуске апача (не чайлда, а всего целиком) этот адрес меняется. mmap этого адреса в стектрейсе нет, как и munmap, наверное адрес какой-нибудь внутренней структуры, которая была создана в юзерспейсе. Последний запрос перед падением - чаще всего не скрипт, а статический файл - картинки, фавиконы, или «OPTIONS * HTTP/1.0» запрос от апача.

Попробую перенести сайтики на другой сервер с внешним php-fcgi и посмотреть, как оно будет себя вести там.

Frakhtan-teh ★★
() автор топика
Ответ на: комментарий от Frakhtan-teh



Отключите все возможные extensions в php. Посмотрите в php.ini (да и вообще) лимиты выделения памяти. Для статики (картинки и пр.) поставьте nginx

zgen ★★★★★
()
Ответ на: комментарий от zgen

nginx стоит, extensions включены только необходимые.
С памятью хуже - сайтам нужно менять memory_limit в достаточно широком диапазоне, от 32 до 128 MB - и им это делать разрешено. Не похоже на нехватку памяти, потребление логируется - даже в свап ни разу не ушли.

Frakhtan-teh ★★
() автор топика
Ответ на: комментарий от Frakhtan-teh

Не похоже на нехватку памяти, потребление логируется - даже в свап ни

разу не ушли.
На мой взгляд, дело может быть не в нехватке физической памяти, а в том, что какие-то компоненты сайтов при работе требуют больше памяти, нежели выделено.

zgen ★★★★★
()
Ответ на: комментарий от zgen

В глобальном конфиге включен resource_limits_tuning и больше нигде не отменяется, т.е. если скрипт захочет больше памяти - мы не мешаем ему взять больше памяти.

Frakhtan-teh ★★
() автор топика
Ответ на: комментарий от Frakhtan-teh

После переноса сайтов на шаблонную конфигурацию сегфолты прекратились.
Вывод: администратор на сервере должен быть один...

Frakhtan-teh ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.