Ошибка Apache Seg (11)

8

У меня есть это в моем быстром error.log:

[Пт. 18 сен. 08:10:54 2009] [извещение] дочерний пид 9178 выходной сигнал Ошибка сегментации (11)
[пт сен. 18 08:11:41 2009] [извещение] дочерний пид 9187 выходной сигнал ошибка сегментации (11)
[пт 18 сентября 08:12:12 2009] [извещение] выходной сигнал 9204 дочернего пида Ошибка сегментации (11)
[пт. 18 сентября 08:12:13 2009] [извещение] выходной сигнал 9202 дочернего пида Ошибка сегментации (11)
[пт 18 сен 08:14:45 2009] [извещение] дочерний пид 9251 сигнал выхода Ошибка сегментации (11)

Это началось в тот же день, когда я добавил файл vhost.conf. Поэтому я вернулся к исходному файлу и перезапустил apache2ctl. К сожалению, это все еще происходит.

Apache, кажется, обслуживает страницы в порядке.

Любые идеи?

Ура,

Натан.

Натан Френд
источник

Ответы:

5

Натан, попробуй останови Apache и запусти его в forground (отладочный, не поточный), что может дать больше подсказок о том, что делает его segfault.

Сказав это, он не должен зависнуть независимо, так что это ошибка, тем не менее, это может быть что-то, что вы можете исправить, если вы знаете, что это вызывает.

apache2 -X

Кроме того (вряд ли раскрыть всю причину этой проблемы), любые предупреждения / ошибки от ...

 apache2ctl -t

...?

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

Вы могли бы также искать какие-либо дампы ядра, полученные из segfault, возможно, в / tmp? Если вы найдете что-нибудь, попробуйте запустить его через GDB ...

gdb apache2 -c /tmp/core.<pid>
Ксеркс
источник
В основном хороший совет, но я бы не сказал, что это ошибка apache, если вы не исключили такие вещи, как использование неправильного mpm или глючного стороннего модуля. Или права доступа к файлам, если потоки запущены от имени другого пользователя или что-то в этом роде. Много вещей, чтобы посмотреть на самом деле. Но да, начните с журналов отладки. ps: вот почему хорошо иметь конфигурацию apache под контролем версий;)
Lee B
Проверка синтаксиса возвращается ОК. Я не хочу перезапускать его в режиме отладки в часы основной работы, попробую сегодня вечером, когда серверы менее загружены. Спасибо за ваши предложения.
Натан Френд
Я только что прочитал то, что написал - и я согласен с Ли - я бы не стал говорить, что это ошибка Apache, и я должен был пояснить, что эта ошибка почти наверняка принадлежит одному из загруженных модулей Apache сторонних производителей, а не Сам апач. :)
Xerxes
5

Sig11 обычно происходят только по одной из двух причин:

  • Плохие программы.

    В случае с Apache статистически вряд ли это будет ошибка в основном коде Apache.

    Гораздо чаще случается ошибка модуля. Либо в том, как модуль безопасно обрабатывает исключения в коде или библиотеках, которые он обрабатывает. Или как он взаимодействует с выбранной моделью Apache MPM. Когда модуль ведет себя неправильно, он неконтролируемо завершает работу, прежде чем вернуть данные в дочерний процесс Apache, и, таким образом, создает ошибку сегмента.

    Просмотрите все изменения, которые вы внесли с момента его последней работы. Как говорит Ли Б. , это идеальный пример использования контроля версий.

    Чтобы немного усложнить ситуацию, вы часто можете выполнить то же поведение, выполнив gracefulвместо полного перезапуска после внесения изменений в настройку модуля Apache. Вы можете исключить это, остановив и запустив Apache.

  • Плохое оборудование.

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

Дэн Карли
источник
Я также наблюдал эту ошибку в системе, в которой недостаточно свободного места подкачки. В системном журнале также происходили сбои и другие процессы, которые жаловались на недостаток свободного места подкачки.
try-catch-finally
3

Наконец-то все исправили. Простой перезапуск сервера остановил ошибки сегмента.

Спасибо за ваши ответы. Я уверен, что это пригодится для диагностики будущих проблем.

Натан.

Натан Френд
источник
1

Я предполагаю, что это мог быть загруженный модуль, имеющий проблему.

Я испытал такое же поведение с PHP и расширением gettext php, это сбой PHP и, следовательно, дочерний процесс apache, обслуживающий запрос.

drAlberT
источник
1

Потратив часы на то, чтобы выяснить причину ошибки, связанной с моей собственной сегментацией, я начал случайное отключение. В моем случае причиной ошибки был ускоритель Zend.

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


источник