Biz iki sahip Windows Server , bir tane 2012 R2 ve diğer 2008 R2 kullanan Apache HTTP Sunucusu ( httpd
) 2.4 vekaleten / ters proxy modu (kullanımı ProxyPass
, ProxyPassReverse
ve Sanal Sunucular yapılandırma). Her iki sunucu da Apache Haus'un Apache 2.4.27 x64 ikili sürümünü kullanır .
Her iki sunucuda da çalışan bazı yedekleme komut dosyalarımız var. Tüm hizmetleri durdururlar (Apache dahil), yedeklemeyi yaparlar ve tüm hizmetleri yeniden başlatırlar.
Bu senaryolar birkaç yıldan beri (neredeyse 4 yıl) iyi çalışıyor. Ancak, başlangıçtan itibaren July 12, 2018
, davranış artık garip. Yedek komut dosyaları işlerini yapıyor, tüm hizmetleri durduruyor, yedek yapıyor, ancak şimdi Apache hariç tüm hizmetler yeniden başlatılıyor.
Araştırdıktan sonra Apache 2.4.27 hizmetinin durdurulamadığını gördüm. Hizmetler konsolunu kullanırken ve hizmeti manuel olarak durdurmaya çalışırken konsolda "Durduruluyor" mesajı görüntülenir ve hiçbir şey olmaz.
Bu yüzden çalışan süreçleri kontrol ettim ve bir httpd.exe
sürecin çalıştığını gördüm . Bu süreci öldürmeye çalıştım ama hiç şansım yoktu.
Bu yüzden denedim:
taskkill /im "httpd.exe" /f /t
Ve çıktı:
ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
Bu yüzden pskill
Sysinternals ile süreci öldürmek için test ettim :
pskill -t 560
Ve çıktı:
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Process 5956 killed.
Ancak bu, httpd
işlem her zaman devam ettiği için yanlıştır !
Bu yüzden Apache'yi 2.4.27'den 2.4.34'e güncelledim, ancak sorun devam ediyor. Durumun engelini kaldırmak için yapılacak tek şey sunucunun tamamını yeniden başlatmaktır.
Yüklü güncellemeleri kontrol ettim ve bazıları July 11, 2018
bir gün önce kuruldu :
- KB4338420
- KB4338818
- KB4339093
- KB4338423
Bu yüzden problemin bu güncellemelerin birinden olduğunu düşünüyorum. Yani hepsini kaldırmadan önce, benimle aynı problemi olan biri var mı, yani Apache 2.4, unkillable olur ve Windows Server'da durdurulamaz mı?
Büyük sorun, eğer bu httpd
süreç öldürülemezse, 80 numaralı port zaten bağlı olduğundan Apache yeniden başlatılamaz.