- http://blog.gufang.org/
- 2019/5/7 22:56:23
- 来源:Gufang's Private Space
- 点击:
今天遇到一个很奇怪的服务器故障,服务器上所有网站全部出现Service Unavailable,
浏览器提示 Service Unavailable HTTP Error 503. The service is unavailabl
按照经验,应该是网站出现了问题,一般是网站连接数过高(不排除DDOS和CC攻击),或者是程序本身故障。
查看了流量和日志,服务器流量和请求稳定,排除了被攻击的可能。
至于程序问题,也不至于,因为查看了web文件和属性,排除了被挂马和数据库连接错误的可能,而且服务器是前几天重新做的新系统,程序运行一直很稳定,所以也排除了程序错误的可能。
所以按照以下步骤进行排查!
查看IIS日志,没发现异常……
查看系统HTTPERR日志,出现大量的503 AppOffline和Timer_ConnectionIdle,这明显是应用池强制关闭,造成网站无法访问
查看事件查看器,windows日志,应用程序,出现大量错误日志:
模块 DLL C:\Windows\system32\inetsrv\svcexts.dll 未能加载。返回的数据为错误信息。
svcexts.dll是什么文件呢?百度和谷歌了一下,居然全部查不到这个文件的任何信息!只能查到svcext.dll这个文件(多了个s),我初步确定,C:\Windows\system32\inetsrv\svcexts.dll 是个病毒!并且进行了伪装!
查看杀毒软件!果然发现杀毒软件中有svcexts.dll 这个文件的杀毒记录!证明我的判断是正确的!
既然无法加载这个文件,并且这个文件已经被杀毒软件删除了,那么只要删除这个记录,应该就能解决服务器问题了。
那么怎么删除文件呢,按照我的经验无非两种情况,第一写入了注册表,第二写入了IIS配置文件,
于是我信心满满,运行regedit,打开注册表,全文搜索svcexts关键字,但是很奇怪!搜索了五六次,没有任何记录信息!
那么我便打开C:\Windows\System32\inetsrv\MetaBase.xml,这个记录应该配置在IIS的配置文件中,但是又很郁闷!同样无法查到任何的匹配信息!我顿时感觉后背凉飕飕,第一次遇到这个情况啊!网站崩溃一两个小时了,再不解决,影响会很大!
喝了杯可乐,整理了思想,我要慢慢冷静下来!冷静冷静!
继续回到日志里,不断的重启服务器和IIS,进行检测,日志一直定位在模块 DLL C:\Windows\system32\inetsrv\svcexts.dll 未能加载……
百度和谷歌了很多资料,没有找到任何有用信息!再次排除了其他各种可能,我坚定只要删除这个dll文件的请求,就肯定能解决问题!只要找到这个dll文件的请求需求,并且删除就行。
继续按照这个思路,我进入系统服务,查看关于IIS的各种启动服务和依赖服务,依旧没有找到任何关联!进入系统启动项,一个一个排查,也没有找到……
IIS,报错,IIS,应用池……大脑高速运转!IIS,IIS,肯定和IIS有关!好,继续排查!
进入IIS的控制面板!HTTP头响应标头、HTTP重定向、ISAPI筛选器、处理程序映射、模块……
咦,等等!在进入模块的时候,突然发现一条记录!
一条HttpRegedit的记录,指向了C:\Windows\system32\inetsrv\svcexts.dll,百度了下HttpRegedit,没有查到任何信息!哈哈哈哈哈哈!我仰天长笑!找到了!找到了!
二话没说,删除了这条记录!!!
重启IIS,依旧无法访问网站,估计要重启服务器吧,于是重启了服务器,等待了三分钟,服务器重启完毕,打开网站,依旧是Service Unavailable ,查看windows日志,最新的日志记录模块 DLL C:\Windows\system32\inetsrv\svcexts.dll 未能加载……
哎呦!我操!我操!我操!
我立马蒙了!再次强制自己冷静!是不是还有其他配置里保存了这个记录呢?进入IIS面板,仔细仔细查了三四次,连分站也不放过,没有找到!
再次进入注册表,试图寻找蛛丝马迹!依旧很失望!
怎么办!怎么办!一个小时又过去了!
我再次回到了IIS管理面板,点击模块配置里,仔细寻找……在哪里?到底在哪里?
忽然发现右上角操作里,又两个选项,添加托管模块和配置本机模块,点开了“配置本机模块”,蓦然发现“HttpRegedit”这个模块名称,点击编辑……哎呦我操操操,C:\Windows\system32\inetsrv\svcexts.dll 出现了!
删除!重启IIS,重启服务器!一顿神操作!……网站终于可以访问了,而且很稳定!
结束语:忙到此,终于送了一口气,从发现问题,到解决问题,一共花了三四个小时!喝了两瓶可乐,弄得一身汗!我一直在想,svcexts这个文件哪里来的,查看病毒日志,基本判断应该是系统非正版服务器软件(非原装),可能本身就自带一些恶意插件,被最新的杀毒软件杀了之后,一些病毒残余文件无法清理,也无法加载,造成系统出错!希望以后大家尽量使用正版软件(条件容许情况下,毕竟一套正版的windows服务器软件好几万人民币啊)。然后就是遇到技术问题,一定要冷静思考,找出事情原因,百度和谷歌查不到的信息,也不要气馁,找到故障本源,一步一步排查,最终肯定能解决问题。