主题
排障:服务器磁盘满,系统卡死/无法登录
现象:用户反映系统突然很卡、登录超时、报表打不开;远程看服务器,磁盘空间告警(通常 C 盘或数据盘 100%)。U8/NC 的日志和临时文件是头号元凶。
影响范围
- 全系统性能骤降、登录失败、单据保存报错
- 数据库事务日志(LDF)暴涨时,数据库可能直接不可用
环境
- 用友 U8 / NC 全系
- 数据库:SQL Server / Oracle
排查路径
- 看磁盘:
df -h(Linux)/ 磁盘管理(Windows),确认哪个盘满了 - 看数据库日志:SQL Server 的 LDF 文件、Oracle 的归档日志(
alert日志目录) - 看应用日志:U8 的应用服务器日志、NC 的
nchome/logs、nchome/ierp/logs - 看临时文件:系统 temp 目录、U8 的缓存目录(
U8Soft/Cache等)
根因分类
- 数据库日志没收缩(最常见):SQL Server LDF 无限制增长,从不做日志备份/收缩
- 应用日志无限增长:NC/U8 日志按天/按大小轮转配置没设,debug 级日志长期开着
- 临时文件堆积:报表导出、批量导入的临时文件不清理
- 数据库备份文件堆积:备份脚本只备份不清理旧备份
处理步骤
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 份」逻辑
- 每月检查一次磁盘空间,纳入运维巡检清单
参考
- 运维交接文档里应有备份策略和日志配置,见 模板库-验收报告 的运维交接章节