У нас є два Windows Server , один в 2012 R2 , а інший в 2008 R2 , який використовує Apache HTTP Server ( httpd
) 2,4 в проксі / зворотного проксі - режим (використання ProxyPass
, ProxyPassReverse
і віртуальні хости конфігурації). Обидва сервери використовують Apache 2.4.27 x64 бінарну збірку від Apache Haus.
У нас є кілька резервних скриптів, що працюють на обох серверах. Вони зупиняють усі сервіси (включаючи Apache), потім роблять резервну копію та знову запускають усі сервіси.
Ці сценарії працюють чудово з кількох років (майже 4 роки). Але починаючи з цього часу July 12, 2018
, поведінка зараз дивна. Сценарії резервного копіювання виконують свою роботу, зупиняючи всі сервіси, створюючи резервну копію, але тепер усі служби перезапускаються, крім Apache.
Після дослідження я виявив, що сервіс Apache 2.4.27 не може бути припинений. Під час використання консолі Служб та спроби зупинити послугу вручну на консолі відображається "Стоп", і нічого не відбувається.
Тому я перевірив запущені процеси і побачив, що httpd.exe
процес працює. Я намагався вбити цей процес, але не пощастило.
Отже, я спробував:
taskkill /im "httpd.exe" /f /t
А вихід:
ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
Тож я перевірив, щоб вбити процес із pskill
Sysinternals:
pskill -t 560
А вихід:
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Process 5956 killed.
Але це помилково, оскільки httpd
процес завжди працює!
Тому я оновив Apache з 2.4.27 до 2.4.34, але проблема залишається. Єдине, що потрібно зробити для розблокування ситуації - це перезавантажити весь сервер.
Я перевірив встановлені оновлення, і деякі з них були встановлені July 11, 2018
так напередодні:
- KB4338420
- KB4338818
- KB4339093
- KB4338423
Тож я припускаю, що проблема пов’язана з одним із цих оновлень. Отже, перед тим, як видалити їх усіх, чи є хтось із такою ж проблемою, як і я, я маю на увазі, що Apache 2.4 стає неможливим і неможливо зупинити його на Windows Server?
Велика проблема полягає в тому, що якщо цей httpd
процес неможливо вбити, Apache не може бути перезапущений, оскільки порт 80 вже пов'язаний.