Apache 2.4 不可杀灭,无法在 Windows Server 上停止

SiZ*_*OUS 11 httpd service windows-server-2008-r2 windows-server-2012-r2 apache-2.4

我们有两个的Windows Server,一个在2012 R2和其他2008 R2,它使用Apache HTTP服务器httpd2.4中的代理服务器/反向代理模式(的使用ProxyPassProxyPassReverse和虚拟主机配置)。两台服务器都使用来自 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
Run Code Online (Sandbox Code Playgroud)

输出是:

ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
Run Code Online (Sandbox Code Playgroud)

所以我测试了pskill从 Sysinternals 终止进程:

pskill -t 560
Run Code Online (Sandbox Code Playgroud)

输出是:

Copyright (C) 1999-2016  Mark Russinovich
Sysinternals - www.sysinternals.com

Process 5956 killed.
Run Code Online (Sandbox Code Playgroud)

但这是错误的,因为httpd进程一直在运行!

所以我已经将 Apache 从 2.4.27 更新到 2.4.34,但问题仍然存在。要解除这种情况,唯一要做的就是重新启动整个服务器。

我检查了已安装的更新,其中一些是July 11, 2018在前一天安装的:

  • KB4338420
  • KB4338818
  • KB4339093
  • KB4338423

所以我认为问题来自这些更新之一。所以在卸载所有这些之前,是否有人和我有同样的问题,我的意思是Apache 2.4 变得无法杀死并且无法在 Windows Server 上停止?

最大的问题是,如果httpd无法终止该进程,则 Apache 无法重新启动,因为端口 80 已经绑定。

SiZ*_*OUS 10

好的,所以我想我是在正确的轨道上。

在 Web 上搜索有关最近安装的更新后,KB4338818是导致问题的原因。

其他软件(如 FileZilla Server)也会发生这种情况,详见此处

我刚刚卸载了这个安全更新,现在 Apache 可以正常启动/停止了!

所以我希望微软会在以后的更新中解决这个问题!