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.