我々は2つ持っているWindows Serverの、1つの2012 R2およびその他2008 R2使用してApache HTTPサーバ(httpd
)2.4をプロキシ/リバースプロキシモード(の使用でProxyPass
、ProxyPassReverse
かつ仮想ホストの構成)。両方のサーバーは、Apache HausからのApache 2.4.27 x64バイナリビルドを使用します。
両方のサーバーでいくつかのバックアップスクリプトが実行されています。すべてのサービス(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
1日前にインストールされました。
- KB4338420
- KB4338818
- KB4339093
- KB4338423
したがって、問題はこれらのアップデートのいずれかによるものと推測します。すべてをアンインストールする前に、私と同じ問題を抱えている人がいますか?Apache 2.4は殺せなくなり、Windows Serverで停止できませんか?
大きな問題は、そのhttpd
プロセスを強制終了できない場合、ポート80が既にバインドされているため、Apacheを再起動できないことです。