У нас есть два 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 уже связан.
Ответы:
Хорошо, так что я думаю, что я был на правильном пути.
После поиска в Интернете о недавно установленных обновлениях KB4338818 вызывает проблемы.
Это происходит для других программ, таких как FileZilla Server, как подробно описано здесь .
Я только что удалил это обновление для системы безопасности, и теперь Apache можно запускать / останавливать как обычно!
Поэтому я надеюсь, что Microsoft исправит это в более позднем обновлении!
источник
httpd
процесс остановится и станет недоступен для уничтожения.Microsoft выпускает KB4345459 для устранения проблем в Windows 7 и Windows 2008 Server.
https://support.microsoft.com/en-us/help/4345459/stop-error-0xd1-after-a-race-condition-occurs-in-windows-7-service-pac
источник
Похоже, что Microsoft начинает исправлять проблему, до сих пор только для Server 2016 и Windows 10: https://support.microsoft.com/de-de/help/4345421/windows-10-update-kb4345421
источник
KB4338831, кажется, решает проблему для Windows Server 2012 R2.
Это доступно как рекомендуемое обновление на Центре обновления Windows.
источник
Я думаю, что вы определенно на правильном пути. У меня была похожая проблема с Tomcat на Windows Server. У меня был другой сервер с Tomcat, который не испытывал проблемы, однако единственное существенное отличие, которое я смог найти, было то, что на рабочем сервере также была установлена IIS и работала на других портах. В качестве обходного пути я попытался загрузить IIS на проблемный сервер, настроив веб-сайт по умолчанию, чтобы он использовал нестандартные порты, и проблема, похоже, исчезла без необходимости удаления обновления.
источник