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

Windows Server 2008 R2 + Apache 2.4 - Постоянный сбой с ошибкой имени модуля: ntdll.dll

Windows Server 2008 R2 Datacenter Edition 64-разрядная.

Использование экземпляра AWS EC2 m1.xlarge

15 ГБ оперативной памяти, 4 виртуальных процессора Intel Xeon

Проблема: сбой каждые 10 секунд / каждую минуту / иногда 1 час / случайным образом


Настройка WINNT MPM:

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
<IfModule mpm_winnt_module>
    ThreadStackSize   8388608
    ThreadsPerChild     500
    MaxRequestsPerChild    0
   SendBufferSize    32768
</IfModule>

Сервер Apache:

Версия сервера: Apache / 2.4.29 (Win64) OpenSSL / 1.0.2n

Серверный MPM: WinNT

Сервер Apache Lounge VC11 построен: 6 ноября 2017 г., 11:17:28

Использование PHP 5.5.38 с mod_php


Содержимое в mod_status:

Server uptime: 1 hour 3 minutes 30 seconds
Server load: -1.00 -1.00 -1.00
Total accesses: 132819 - Total Traffic: 418.0 MB
34.9 requests/sec - 112.3 kB/second - 3299 B/request
115 requests currently being processed, 385 idle workers

Содержимое в apache error.log, постоянный сбой каждые несколько минут

[Thu Jan 09 14:06:41.869757 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00428: Parent: child process 3872 exited with status 255 -- Restarting.
[Thu Jan 09 14:06:42.821339 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00455: Apache/2.4.29 (Win64) OpenSSL/1.0.2n configured -- resuming normal operations
[Thu Jan 09 14:06:42.821339 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00456: Apache Lounge VC11 Server built: Nov  6 2017 11:17:28
[Thu Jan 09 14:06:42.821339 2020] [core:notice] [pid 7408:tid 260] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Thu Jan 09 14:06:42.821339 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00418: Parent: Created child process 2588
[Thu Jan 09 14:06:44.100514 2020] [mpm_winnt:notice] [pid 2588:tid 156] AH00354: Child: Starting 500 worker threads.
[Thu Jan 09 14:06:47.470049 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00428: Parent: child process 2588 exited with status 255 -- Restarting.
[Thu Jan 09 14:06:48.265634 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00455: Apache/2.4.29 (Win64) OpenSSL/1.0.2n configured -- resuming normal operations
[Thu Jan 09 14:06:48.265634 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00456: Apache Lounge VC11 Server built: Nov  6 2017 11:17:28
[Thu Jan 09 14:06:48.265634 2020] [core:notice] [pid 7408:tid 260] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Thu Jan 09 14:06:48.265634 2020] [mpm_winnt:notice] [pid 7408:tid 260] AH00418: Parent: Created child process 5876
[Thu Jan 09 14:06:49.279615 2020] [mpm_winnt:notice] [pid 5876:tid 156] AH00354: Child: Starting 500 worker threads.

Контент в средстве просмотра событий Windows

Faulting application name: httpd.exe, version: 2.4.29.0, time stamp: 0x5a00349c
Faulting module name: ntdll.dll, version: 6.1.7601.23677, time stamp: 0x589c99e1
Exception code: 0xc0000005
Fault offset: 0x000000000004f23c
Faulting process id: 0x1ff4
Faulting application start time: 0x01d5c6b2a8435c36
Faulting application path: C:\Apache24\bin\httpd.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 1b83564d-32a6-11ea-a95b-22000a1f2f53

Вопрос: Почему он использует C: \ Windows \ SYSTEM32 \ ntdll.dll, когда это 64-битный apache? Может в этом проблема?


Что я пытался решить эту проблему:

  1. Пытался изменить настройку MPM ThreadsPerChild с 1500 до 200, по-прежнему сбой

  2. Протестирована установка лимита памяти PHP.ini от 500 МБ до 2 ГБ, все еще происходит сбой

  3. Обновлен Apache до последней версии 2.4.38, проблема все еще есть

Есть ли способ отладить эту проблему? Узнайте, какой модуль / код вызывает это?

Из того, что я искал, код ошибки 0xc0000005, также известный как ошибка нарушения доступа.


ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ:

Обновлен PHP до версии 5.6.40 (последнее обновление - январь 2019 г.), сбои стали намного меньше. Примерно 5-10 раз в сутки в течение последних 4 дней.

Сбои больше не связаны с неисправным модулем ntdll.dll, а с php5ts.dll и LIBLEAY32.dll (связанные с ssl), поэтому больше не связаны с этим потоком.

Вы ведь знаете, что ваша операционная система не будет поддерживаться Microsoft через 4 дня, верно? И ваша версия php уже много лет не поддерживается. Просто чтобы вы знали.

Но для вашей проблемы попробуйте немного отключить php, чтобы посмотреть, не вылетит ли он после этого. Есть некоторые проблемы с apache для Windows и запуском php как модуля, так что, возможно, проблема в этом. Если после этого он все еще вылетает, то, по крайней мере, вы исключили его как причину.