Kami memiliki dua Windows Server , satu di 2012 R2 dan yang lainnya di 2008 R2 yang menggunakan Apache HTTP Server ( httpd
) 2.4 dalam mode proxy / reverse-proxy (penggunaan ProxyPass
, ProxyPassReverse
dan konfigurasi Host Virtual). Kedua server menggunakan Apache 2.4.27 x64 binary build dari Apache Haus.
Kami memiliki beberapa skrip cadangan yang berjalan di kedua server. Mereka menghentikan semua layanan (termasuk Apache) kemudian melakukan pencadangan dan memulai kembali semua layanan lagi.
Skrip ini berfungsi dengan baik sejak beberapa tahun (hampir 4 tahun). Tetapi mulai dari July 12, 2018
, perilakunya sekarang aneh. Skrip cadangan melakukan tugasnya, menghentikan semua layanan, membuat cadangan tetapi sekarang, semua layanan dihidupkan ulang kecuali Apache.
Setelah menyelidiki, saya menemukan bahwa layanan Apache 2.4.27 tidak dapat dihentikan. Saat menggunakan konsol Layanan dan mencoba menghentikan layanan secara manual, konsol menampilkan "Berhenti" dan tidak ada yang terjadi.
Jadi saya memeriksa proses yang berjalan dan melihat bahwa suatu httpd.exe
proses sedang berjalan. Saya mencoba untuk membunuh proses itu tetapi tidak berhasil.
Jadi, saya mencoba:
taskkill /im "httpd.exe" /f /t
Dan hasilnya adalah:
ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
Jadi saya diuji untuk mematikan proses dengan pskill
dari Sysinternals:
pskill -t 560
Dan hasilnya adalah:
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Process 5956 killed.
Tapi ini salah, karena httpd
prosesnya selalu berjalan!
Jadi saya telah memperbarui Apache dari 2.4.27 ke 2.4.34, tetapi masalahnya tetap ada. Satu-satunya hal yang harus dilakukan untuk membuka blokir situasi adalah me-reboot seluruh server.
Saya memeriksa pembaruan yang diinstal, dan beberapa di antaranya diinstal July 11, 2018
satu hari sebelumnya:
- KB4338420
- KB4338818
- KB4339093
- KB4338423
Jadi saya kira masalahnya adalah dari salah satu pembaruan ini. Jadi sebelum menghapus semua dari mereka, apakah ada seseorang yang memiliki masalah yang sama seperti saya, maksud saya Apache 2.4 menjadi tidak dapat diraih dan tidak dapat dihentikan pada Windows Server?
Masalah besarnya adalah, jika httpd
proses itu tidak dapat dimatikan, Apache tidak dapat dimulai kembali karena port 80 sudah terikat.
Jawaban:
OK, jadi saya pikir saya berada di jalur yang benar.
Setelah mencari di Web tentang pembaruan yang baru diinstal, KB4338818 adalah yang menyebabkan masalah.
Ini terjadi untuk perangkat lunak lain, seperti FileZilla Server, seperti yang dijelaskan di sini .
Saya baru saja menghapus Pembaruan Keamanan ini dan sekarang Apache dapat dimulai / dihentikan seperti biasa!
Jadi saya berharap Microsoft akan memperbaikinya di pembaruan yang lebih baru!
sumber
httpd
prosesnya akan membeku dan menjadi tidak dapat dibunuh.Microsoft merilis KB4345459 untuk memperbaiki masalah di Windows 7 dan Windows 2008 Server.
https://support.microsoft.com/en-us/help/4345459/stop-error-0xd1-after-a-race-condition-occurs-in-windows-7-service-pac
sumber
Sepertinya Microsoft mulai memperbaiki masalah ini, sampai sekarang hanya untuk Server 2016 dan Windows 10: https://support.microsoft.com/de-de/help/4345421/windows-10-update-kb4345421
sumber
KB4338831 tampaknya memperbaiki masalah untuk Windows Server 2012 R2.
Ini tersedia sebagai pembaruan yang disarankan pada Pembaruan Windows.
sumber
Saya pikir Anda pasti berada di jalur yang benar. Saya mengalami masalah serupa dengan Tomcat di Windows Server. Saya punya server lain dengan Tomcat yang tidak mengalami masalah, dan satu-satunya perbedaan utama yang bisa saya temukan adalah server yang berfungsi juga menginstal dan menjalankan IIS pada port lain. Sebagai solusi, saya mencoba memuat IIS pada server masalah yang mengatur situs web standar sehingga menggunakan port non-standar dan masalah tampaknya telah hilang tanpa harus menghapus pembaruan.
sumber