Skip to content

排障:服务器磁盘满,系统卡死/无法登录

现象:用户反映系统突然很卡、登录超时、报表打不开;远程看服务器,磁盘空间告警(通常 C 盘或数据盘 100%)。U8/NC 的日志和临时文件是头号元凶。

影响范围

  • 全系统性能骤降、登录失败、单据保存报错
  • 数据库事务日志(LDF)暴涨时,数据库可能直接不可用

环境

  • 用友 U8 / NC 全系
  • 数据库:SQL Server / Oracle

排查路径

  1. 看磁盘df -h(Linux)/ 磁盘管理(Windows),确认哪个盘满了
  2. 看数据库日志:SQL Server 的 LDF 文件、Oracle 的归档日志(alert 日志目录)
  3. 看应用日志:U8 的应用服务器日志、NC 的 nchome/logsnchome/ierp/logs
  4. 看临时文件:系统 temp 目录、U8 的缓存目录(U8Soft/Cache 等)

根因分类

  1. 数据库日志没收缩(最常见):SQL Server LDF 无限制增长,从不做日志备份/收缩
  2. 应用日志无限增长:NC/U8 日志按天/按大小轮转配置没设,debug 级日志长期开着
  3. 临时文件堆积:报表导出、批量导入的临时文件不清理
  4. 数据库备份文件堆积:备份脚本只备份不清理旧备份

处理步骤

1. 应急:腾空间

  • 清 temp 目录、清应用缓存
  • 收缩数据库日志(SQL Server):
sql
-- 先备份日志,再收缩
BACKUP LOG [库名] TO DISK = 'D:\backup\xxx_log_backup.bak';
DBCC SHRINKFILE (N'库名_log', 1024);  -- 收缩到 1GB

⚠️ 注意:收缩前确认日志备份策略。如果数据库是「简单恢复模式」,直接 DBCC SHRINKFILE;完整恢复模式必须先备份日志,否则收缩无效。

2. 治本:设上限

  • SQL Server:数据库设为「简单恢复模式」或定期日志备份(每天)
  • NC 日志:log4j 配置按大小轮转,设最大文件数
  • U8 日志:清理历史日志目录,保留最近 N 天

3. 建立监控

  • 磁盘空间告警(>80% 提醒)
  • 定期清理脚本(备份文件保留 N 份)

预防措施

  • 数据库日志:上线时就把恢复模式和备份策略设好,别等爆了再救
  • 日志轮转:应用日志必须配轮转,debug 日志只在排查时开
  • 备份清理:备份脚本要带「保留 N 份」逻辑
  • 每月检查一次磁盘空间,纳入运维巡检清单

参考

内容已脱敏 · 不含客户名称与真实金额

微信公众号显林的随笔

ERP 实施笔记 · 案例复盘 · 资料更新提醒
微信搜一搜「显林的随笔」即可关注

二维码待补
(林哥提供后替换)