Назад | Перейти на главную страницу

Предупреждения об ошибках сегментации веб-сервера Linux / apache

В последнее время я получаю много предупреждений об ошибках сегментации на моем веб-сервере.

Предупреждения выглядят так:

[notice] child pid xxxx exit signal Segmentation fault (11)

Я проконсультировался с поставщиком сервера (это выделенный корпоративный сервер Redhat), и они ничего не нашли.

Что я сделал до сих пор:

После ошибки я уже пробовал следующее:

В момент появления предупреждений кажется, что осталось много свободной оперативной памяти, а количество процессов очень мало (количество процессов httpd составляет около четверти от максимально допустимого).

Что может быть причиной этих ошибок?

Редактировать: текущие версии

Изменить 2: Хотя я спросил об этом очень давно, мне так и не удалось решить эту проблему, пока я не обновился до php 5.3.

Хорошо, ошибка сегментации является признаком ошибки программы; дело не в недостатке памяти. Это происходит, когда программа пытается получить доступ к памяти, к которой ей не разрешен доступ.

Если это происходит в Apache, вам необходимо включить дампы ядра и перезапустить процесс httpd. Есть руководство, как сделать это в Документация Apache.

Что может быть причиной этих ошибок?

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

Возможно, что какой-то скрипт php или что-то еще делает что-то, что вызывает сбой. Как только вы выясните, какая страница / файл вызывает сбой, вы можете углубиться в выяснение того, что он делает, и доступны ли исправления ошибок.

Много раз наблюдали ошибку "ошибка сегментации сигнала выхода (11)". Это происходит, когда некоторые сценарии не завершаются во время сбоя apache.

Если вы используете веб-сайт на основе PHP на apache, это очень вероятно.

Если вы вообще используете PHP, проверьте следующую конфигурацию в конфигурации php в conf.d / php.conf:

<Files *.php>
    SetOutputFilter PHP
    SetInputFilter PHP
    LimitRequestBody 524288
</Files>

Удалить LimitRequestBody линия. и наблюдайте. Ошибка должна исчезнуть.

Также, если вы используете apache с php, следующие версии работают отлично. apache 2.0.43 и php 4.3.0_RC1

Примечание. Этот ответ основан исключительно на моих прошлых исследованиях ошибки и проблемы, с которыми я столкнулся. Сообщите мне вашу текущую конфигурацию и отзывы.

Вы обновляли apache или какие-либо его модули в последнее время? Я видел эту проблему, когда у вас есть мод, созданный для другой версии интерфейса (в моем случае - expat). Если вы можете сузить круг до нескольких программ, проверьте для этого всю информацию о версии. Видеть http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash

Часто, когда я видел, это было вызвано сценарием PHP, выполняющим бесконечную рекурсию. Вы можете использовать временную метку в error_log, чтобы определить запросы из access_log, которые могли вызвать проблему. Если там есть какие-либо запросы сценариев PHP, вам (или вашим разработчикам) следует взглянуть на эти страницы и посмотреть, есть ли там какие-либо потенциальные проблемы.

Джим.

Недавно у меня была одна из этих ошибок, и она была связана с тем, что MySQL не имел надлежащего доступа к базе данных для Cacti.

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

У вас скачан нужный mod_whatever? У меня была аналогичная ситуация, когда я загрузил mod_jk для Solaris, но Apache, который я запускал, был включен от Sun и был скомпилирован не с помощью gcc, а с их компилятором. Мне пришлось скачать исходный код mod \ jk и скомпилировать его с помощью компилятора Sun.

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

Загляните в этот блог, чтобы узнать, как работать с дампами ядра, чтобы найти ошибку в PHP-коде:

http://www.omh.cc/blog/2008/mar/6/fixing-apache-segmentation-faults-caused-php/

Это не мой пост в блоге - я просто наткнулся на него и нашел его полезным.

Скотт