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

Что может вызвать прерывание работы приложения PHP под нагрузкой?

Разместил это в stackoverflow, но здесь он кажется более актуальным ... Я провожу нагрузочное тестирование (используя jMeter) в приложении PHP (это приложение Symfony, если это имеет значение). Я тестировал его как с настройками apache / mod_php, так и с nginx / php_fpm, а также с несколькими версиями php, apache, nginx и linux, и журналы полны подобных ошибок. Я изо всех сил пытаюсь понять, почему возникают эти сбои:

[13 марта, среда, 00:54:47 2013] [примечание] дочерний pid 18830 сигнал выхода Ошибка шины (7), возможный дамп ядра в / tmp / apache2-gdb-dump

[13 марта, среда, 00:54:55 2013] [уведомление] дочерний pid 19016 сигнал выхода Ошибка шины (7), возможный дамп памяти в / tmp / apache2-gdb-dump

[13 марта, среда, 00:54:56 2013] [уведомление] дочерний pid 19002 сигнал выхода Ошибка шины (7), возможный дамп памяти в / tmp / apache2-gdb-dump

[13 марта, среда, 00:54:58 2013] [примечание] дочерний pid 19041 сигнал выхода Ошибка шины (7), возможный дамп памяти в / tmp / apache2-gdb-dump

Когда я генерирую обратную трассировку из дампов ядра, я получаю

[Новый LWP 588] [Отладка потоков с использованием libthread_db включена] Использование библиотеки libthread_db на хосте

"/lib/i386-linux-gnu/tls/i686/nosegneg/libthread_db.so.1". Ядро было сгенерировано командой `/ usr / sbin / apache2 -k start '. Программа завершена сигналом 7, Ошибка шины.

0 lex_scan (zendlval = 0xb6d2ce38) в /build/buildd/php5-5.4.6/Zend/zend_language_scanner.c:2260

Тема 1 (Тема 0xb7485700 (LWP 588)):

0 lex_scan (zendlval = 0xb6d2ce38) в /build/buildd/php5-5.4.6/Zend/zend_language_scanner.c:2260

Так может дело в парсинге? Однако я мало знаю о внутреннем устройстве php, поэтому не уверен. Что могло быть причиной этого?

Этот отчет об ошибке относится к той же проблеме: https://bugs.php.net/bug.php?id=52752

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

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

Просто загляните в эту ссылку. У меня это сработало.

http://www.php.net/git.php#buildconf_fail