我们有两个
Windows Server,一个在2012 R2中,另一个在2008 R2中,它在代理/反向代理模式下使用Apache HTTP Server(httpd)2.4(使用ProxyPass,ProxyPassReverse和虚拟主机配置).两台服务器都使用Apache Haus的Apache 2.4.27 x64二进制版本.
我们在两台服务器上都运行了一些备份脚本.他们停止所有服务(包括Apache),然后进行备份并再次重启所有服务.
几年(近4年),这些脚本运行良好.但从2018年7月12日开始,这种行为现在很奇怪.备份脚本正在执行其工作,停止所有服务,进行备份,但现在,除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.
所以我测试了用来自Sysinternals的pskill杀死进程:
pskill -t 560
输出是:
Copyright (C) 1999-2016 Mark Russinovich Sysinternals - www.sysinternals.com Process 5956 killed.
但这是错误的,因为httpd进程始终在运行!
所以我已经将Apache从2.4.27更新到2.4.34,但问题仍然存在.解除这种情况唯一要做的就是重启整个服务器.
我检查了已安装的更新,其中一些已安装在2018年7月11日所以前一天:
> KB4338420
> KB4338818
> KB4339093
> KB4338423
所以我认为问题来自其中一个更新.所以在卸载所有这些之前,是否有人遇到与我相同的问题,我的意思是Apache 2.4变得无法攻击并且无法在Windows Server上停止?
最大的问题是,如果无法杀死httpd进程,则无法重新启动Apache,因为端口80已经绑定.
好的,所以我觉得我走在了正确的轨道上.
在网上搜索最近安装的更新后,KB4338818就会出现问题.
其他软件也会发生这种情况,例如FileZilla Server,as detailed here.
我刚刚卸载了此安全更新,现在Apache可以正常启动/停止!
所以我希望微软能够在以后的更新中解决这个问题!