Mamy dwa Windows Server , jeden w 2012 R2 , a drugi w 2008 R2 , który wykorzystuje Apache HTTP Server ( httpd
) 2,4 w proxy / tryb reverse-proxy (użytkowanie ProxyPass
, ProxyPassReverse
i hostów wirtualnych konfiguracji). Oba serwery używają kompilacji binarnej Apache 2.4.27 x64 z Apache Haus.
Mamy kilka skryptów kopii zapasowych działających na obu serwerach. Zatrzymują wszystkie usługi (w tym Apache), a następnie wykonują kopię zapasową i ponownie uruchamiają wszystkie usługi.
Te skrypty działają dobrze od kilku lat (prawie 4 lata). Ale począwszy od July 12, 2018
tego zachowanie jest teraz dziwne. Skrypty kopii zapasowej wykonują swoje zadania, zatrzymując wszystkie usługi, wykonując kopię zapasową, ale teraz wszystkie usługi są restartowane z wyjątkiem Apache.
Po zbadaniu okazało się, że usługi Apache 2.4.27 nie można zatrzymać. Podczas korzystania z konsoli Usługi i próby ręcznego zatrzymania usługi konsola wyświetla komunikat „Zatrzymywanie” i nic się nie dzieje.
Sprawdziłem więc uruchomione procesy i zobaczyłem, że httpd.exe
proces działa. Próbowałem zabić ten proces, ale bez powodzenia.
Próbowałem więc:
taskkill /im "httpd.exe" /f /t
Wyjście to:
ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
Więc przetestowałem, aby zabić proces z pskill
Sysinternals:
pskill -t 560
Wyjście to:
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Process 5956 killed.
Ale to nieprawda, ponieważ httpd
proces zawsze trwa!
Zaktualizowałem więc Apache z 2.4.27 do 2.4.34, ale problem pozostaje. Jedyne, co należy zrobić, aby odblokować sytuację, to zrestartowanie całego serwera.
Sprawdziłem zainstalowane aktualizacje, a niektóre z nich zostały zainstalowane na July 11, 2018
jeden dzień wcześniej:
- KB4338420
- KB4338818
- KB4339093
- KB4338423
Zakładam, że problem dotyczy jednej z tych aktualizacji. Czy przed odinstalowaniem ich wszystkich jest ktoś, kto ma taki sam problem jak ja, mam na myśli, że Apache 2.4 staje się niemożliwy do zabicia i nie można go zatrzymać na Windows Server?
Dużym problemem jest to, że jeśli tego httpd
procesu nie można zabić, nie można zrestartować Apache, ponieważ port 80 jest już związany.
Odpowiedzi:
OK, więc myślę, że byłem na dobrej drodze.
Po wyszukaniu w sieci ostatnio zainstalowanych aktualizacji KB4338818 powoduje problemy.
Dzieje się tak w przypadku innych programów, takich jak FileZilla Server, jak wyszczególniono tutaj .
Właśnie odinstalowałem tę aktualizację zabezpieczeń i teraz Apache można normalnie uruchomić / zatrzymać!
Mam więc nadzieję, że Microsoft naprawi to w późniejszej aktualizacji!
źródło
httpd
proces zawiesi się i stanie się niemożliwy do wywołania.Firma Microsoft wydaje KB4345459, aby rozwiązać problemy w systemie Windows 7 i Windows 2008 Server.
https://support.microsoft.com/en-us/help/4345459/stop-error-0xd1-after-a-race-condition-occurs-in-windows-7-service-pac
źródło
Wygląda na to, że Microsoft zaczyna naprawiać problem, do tej pory tylko dla Server 2016 i Windows 10: https://support.microsoft.com/de-de/help/4345421/windows-10-update-kb4345421
źródło
KB4338831 wydaje się naprawiać problem w systemie Windows Server 2012 R2.
Jest dostępny jako zalecana aktualizacja w Windows Update.
źródło
Myślę, że zdecydowanie jesteś na dobrej drodze. Miałem podobny problem z Tomcat na Windows Server. Miałem inny serwer z Tomcat, który jednak nie miał tego problemu, a jedyną znaczącą różnicą, jaką mogłem znaleźć, było to, że działający serwer miał również zainstalowany IIS i działał na innych portach. Aby obejść ten problem, próbowałem załadować IIS na serwer problemów, konfigurując domyślną stronę internetową, tak aby korzystała z niestandardowych portów, a problem wydaje się zniknąć bez konieczności odinstalowywania aktualizacji.
źródło