php 5.3.6 - iis 7.5 - win2k8r2 - fast-cgi: ошибка в php-cgi.exe или FastCgiModule - PullRequest
0 голосов
/ 24 февраля 2012

Привет. Я получаю сообщение об ошибке в приложении php, которое иногда приводит к ошибке в журнале событий:

Неправильное имя приложения: php-cgi.exe, версия: 5.3.6.0, отметка времени: 0x4d81eb28 Неверное имя модуля: php5.dll, версия: 5.3.6.0, отметка времени: 0x4d81ebdc Код исключения: 0xc0000005

И в других случаях ошибка fast-cgi без регистрации событий (можно просматривать на локальном сервере):

C: \ Program Files (x86) \ PHP \ v5.3 \ php-cgi.exe - процесс FastCGI неожиданно завершился

В этом случае, хотя в журнал событий не регистрируется ошибка, сразу после ошибки всегда следуют 2 следующие записи:

Протокол адаптера прослушивателя «net.pipe» успешно подключен к службе активации Windows. Протокол адаптера прослушивателя «net.tcp» успешно подключен к службе активации процессов Windows.

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

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

Если я присоединяю XDebug (PHP Storm) и отслеживаю выполнение, оно завершается без проблем. Если я бегу без трассировки, становится очевидным один из приведенных выше сценариев сбоев.

Может ли кто-нибудь объяснить это поведение предоставленной мною информацией, особенно почему присоединение отладчика и трассировка через приложение предотвращает проблему?

Как бы вы отладили это?

Спасибо.

1 Ответ

2 голосов
/ 27 февраля 2012

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

Таким образом, гарантируя, что каждая строка трассировки отображает время и использование памяти, мы:

  1. вывод трассировки в файл, строка за строкой.
  2. сравнение трассировок различных исполнений для шаблонов.

В моем случае единственным шаблоном было потребление памяти.Успешные запуски использовали менее 60 МБ, ошибочные запуски - более 60 МБ.

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

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

...