2012-02-24 3 views
0

Привет, я получаю ошибку в приложении php, иногда приводящем к ошибке в журнале событий как таковой:php 5.3.6 - iis 7.5 - win2k8r2 - fast-cgi: ошибка в php-cgi.exe или FastCgiModule

Сбойное имя приложения: PHP-cgi.exe, версия: 5.3.6.0, отметка времени: 0x4d81eb28 Faulting имя модуля: php5.dll, версия: 5.3.6.0, отметка времени: 0x4d81ebdc код Exception: 0xc0000005

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

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

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

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

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

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

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

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

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

Спасибо.

ответ

2

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

Так, чтобы каждая строка трассировки отображает время и память Usuage мы:

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

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

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

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