Windows 服务器磁盘满问题排查

最近在部署的应用服务器上,经常出现服务重启的问题,排查了一下服务器的配置,发现是因为 C 盘被写满了,导致服务器本身出了问题。

使用 WizTree 工具排查了一下,C 盘目录下的文件树,发现有 2 个文件夹比较大,一个是 winsxs ,一个是 winevt\Logs\ 文件夹非常大。

日志文件满

其中 \winevt\Logs\ 文件夹主要是用来存储 Windows 日志的,查了一下,其中的 Archive 开头的文件都是历史文件,可以删除掉。

操作之后,C 盘一下清理掉了 40G 的文件,搜索一下满的原因:是因为在日志属性中设置成:日志满时将其存档,不覆盖事件。所以日志文件就持续记录,导致磁盘满了。

在「管理工具」中打开「事件查看器」,找到「Windows 日志」,依次查看「应用程序」、「安全」、「设置」和「系统」的日志属性,并将其修改为「按需要覆盖时间(旧事件优先)」即可。

另外可以使用 bat 文件清理日志文件夹:

@echo off
set srcDir="x:\xx\xx"
set daysAgo=5

forfiles /p %srcDir% /s /m *.* /d -%daysAgo% /c "cmd /c del @path"

sxs 组件满

另外一个占用比较大的文件夹是 C 盘 Windows 目录下的 winsxs 文件夹,查看了一下,发现是 windows 的一些组件,不能随意清理,所以启动 Dism++ 工具,选择「空间回收」,然后选择「过期文件」,勾选「被取代的WinSxS组件」,扫描后进行清理即可。