Рекомендации по отладке Apache с ошибками сегментации PHP

Каждый час или около того процесс Apache. Ошибки на нашем веб-сервере. Мы запускаем не-threaded PHP 5.2.17 Apache модуль с Apache prefork MPM. Я запустил httpd с несколькими дампами ядра, gdb и этим .gdbinit файлом из gythub repo php , набрав эту команду в gdb для каждого:

dump_bt executor_globals.current_execute_data 

Не имея опыта работы с gdb или внутренними работами интерпретатора php, я ничего не могу сделать из результатов.

 core.22762 [0x53896ef0] () :-2118682552 [0x538977a0] () /Statement/Interface.php:113 [0x538978a0] /Zend/Db/Statement/Interface.php() core.22791 [0x538977a0] () @:0 [0x538978a0] () core.5568 [0x53896ef0] () :2061035360 [0x538977a0] () :1767992432 [0x538978a0] () core.30384 [0x538977a0] () :0 [0x538978a0] () core.3091 [0x53896ef0] mysql_query():992424253 [0x538977a0] () ~:17 [0x538978a0] () 

(Core.3091 также показывает это после того, как Program terminated with signal 11, Segmentation fault. )

 #0 0x00002b6e7ad8d67d in zend_do_fcall_common_helper_SPEC (execute_data=0x7fff53896ef0) at /usr/src/debug/php-5.2.17/Zend/zend_vm_execute.h:217 217 EX_T(opline->result.u.var).var.fcall_returned_reference = return_reference; 

Есть ли что-то еще, что я могу напечатать в gdb, чтобы получить лучшую трассировку стека? Есть ли что-нибудь еще, что вы делаете при отладке ошибок сегментации Apache?

Любая помощь будет принята с благодарностью, спасибо.

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

Если вы используете Opc Code cacher (eaccelerator, APC или XCache), вы можете попытаться отключить их, они, как известно, вызывают нечетное segfault.

Раньше нам приходилось развертывать некоторые впечатляющие хакерские решения для системы segfault, для краткосрочных исправлений, конечно. Например, этот cronjob работал хорошо:

# Restart apache when a segfault is found in the most recent line of errorlog #*/5 * * * * tail -n1 /var/log/apache2/error.log | grep 'Segmentation fault' && /etc/init.d/apache2 restart #*/5 * * * * tail -n1 /var/log/apache2/error.log | grep 'Segmentation fault' && /etc/init.d/apache2 restart

Или вы можете попробовать что-то более умное: #*/5 * * * * /usr/bin/wget http://www.my-site.com/ -T10 -O 2> /dev/null - | grep "Hosted by" > /dev/null || /usr/local/bin/brutally_restart_apache.sh #*/5 * * * * /usr/bin/wget http://www.my-site.com/ -T10 -O 2> /dev/null - | grep "Hosted by" > /dev/null || /usr/local/bin/brutally_restart_apache.sh

Где жестоко_рестарт:

  #!/bin/sh /usr/sbin/apache2ctl stop sleep 6 killall -9 apache2 sleep 4 /usr/sbin/apache2ctl start 
  • Zend Framework на PHP 7
  • Как удалить вызовы require_once в directoryе (Win)
  • CentOS: Zend Framework: невозможно get path к библиотеке
  • Что такое lighttpd эквивалент RewriteCond% {REQUEST_FILENAME}! -f?
  • Прокси Nginx не передает URL-адрес в структуре controllerа / действия для Apache2
  • Автозагрузчик Zend не работает из конфигурации PHP
  • Zend 1 на Ubuntu с MSSQL не работает
  • Что upload, чтобы get среду Apache 2.0.x + PHP 4.4.x?
  • Zend Framework не будет работать для URL-адресов с завершающим косой чертой - как настроить nginx правильно переписать URL-адреса?
  • Установка часового пояса в MySQL при каждом подkeyении с использованием Zend PHP
  • Настройка Zend Framework на CentOS - Невозможно разместить папку Zend
  • Давайте будем гением компьютера.