数字档案馆系统故障排除困难?全流程标准化实操排查落地指南
一、前置准备:提前备好排查必备工具包
所有工具提前配置完成,故障发生时无需临时下载授权,可直接启动排查:
- 保存完整系统基线包:包含nginx.conf完整配置、SpringBoot架构的application.yml生产配置、MySQL的my.cnf配置、存储挂载fstab配置,以及正常运行时的基线阈值(CPU峰值≤70%、内存占用≤80%、磁盘IO延迟≤20ms、接口平均响应时间≤300ms)
- 预装排查工具集:提前在备用节点安装依赖,CentOS系统执行命令:yum install iftop sysstat java-1.8.0-openjdk-devel mariadb -y;Ubuntu系统执行命令:apt install iftop sysstat openjdk-8-jdk mariadb-server -y,覆盖网络、磁盘、Java栈、慢查询全场景排查需求
- 提前配置权限白名单:将排查人员IP加入服务器SSH白名单、数据库访问白名单、系统后台管理员白名单,避免排查时被安全策略拦截
二、分阶排查:按优先级逐层定位故障点
严格按优先级从高到低排查,90%的常见故障可在30分钟内定位解决:
2.1 第一优先级:用户侧故障排查(5分钟完成)
先排除端侧问题,避免无意义动服务器配置:
- 第一步要求用户提供3个信息:浏览器控制台报错截图、访问的完整URL、所在网络环境(政务内网/互联网/VPN连接)
- 第二步用相同网络环境访问同一URL,若可正常访问,直接指导用户清缓存:Chrome按Ctrl+Shift+Delete,时间范围选“所有时间”,勾选“缓存的图片和文件”点击清除,或切换Edge浏览器重试,可解决90%的端侧故障
- 若相同环境下确实无法访问,进入下一层排查
2.2 第二优先级:基础资源层排查(10分钟完成)
该层故障占总故障的60%,优先排查:
- 服务器状态排查:SSH登录服务器执行top命令,看CPU空闲率(id值)若低于20%,找到占用最高的Java进程,执行jstack 进程ID > jstack.log留存日志备查;执行free -h看可用内存,若available低于1G,执行sync && echo 3 > /proc/sys/vm/drop_caches临时释放缓存;执行df -h看磁盘使用率,若分区使用率高于95%,执行find /opt/数字档案馆/logs/ -mtime +7 -name ".log" -delete删除7天前的日志释放空间
- 存储状态排查:执行mount看NAS/对象存储挂载点是否存在,不存在则执行mount -a重新挂载,再执行touch 挂载点/test.txt验证写入权限,写入失败直接联系存储运维排查
- 网络状态排查:执行iftop -P看80/443/8080端口流量,若跑满带宽阈值,执行netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr定位恶意IP,执行iptables -I INPUT -s 恶意IP -j DROP临时封禁
2.3 第三优先级:应用服务层排查(15分钟完成)

基础资源无问题时排查应用本身:
- 服务进程排查:执行ps -ef | grep java看数字档案馆进程是否存在,不存在则执行启动命令:cd /opt/数字档案馆/ && nohup java -jar archive-system.jar --spring.profiles.active=prod &,执行tail -f nohup.out查看启动日志是否有报错
- 反向代理排查:执行nginx -t验证配置是否合法,不合法直接用提前备份的基线配置替换/etc/nginx/nginx.conf,执行nginx -s reload重载生效
- 接口报错排查:执行tail -f /opt/数字档案馆/logs/error.log看错误日志,若提示数据库连接异常,进入数据层排查
2.4 第四优先级:数据层排查(10分钟完成)
- 数据库进程排查:执行ps -ef | grep mysqld看进程是否存在,不存在执行systemctl start mysqld启动
- 慢查询排查:执行mysqldumpslow -s t -t 10 /var/log/mariadb/slowquery.log查看Top10慢SQL,若检索类SQL无索引,临时加索引示例:ALTER TABLE archive_info ADD INDEX idx_create_time (create_time);,索引字段根据慢SQL的WHERE条件调整
- 文件损坏排查:若单份档案无法打开,执行md5sum 存储路径/对应档案文件,和备份的MD5值对比,不一致直接从/backup/archive/对应日期的备份目录替换文件
三、应急兜底:1分钟快速恢复业务方案
若排查超过30分钟仍未定位根因,先执行兜底方案恢复业务,再后续排查问题:
提前编写切换备用节点脚本,保存为/opt/script/switch_to_backup.sh,内容可直接复制修改:
``` !/bin/bash 停主节点服务 systemctl stop nginx ps -ef | grep archive-system.jar | grep -v grep | awk '{print $2}' | xargs kill -9 切换流量到备节点,将192.168.1.100替换为主节点IP,192.168.1.101替换为备节点IP sed -i 's/192.168.1.100:8080/192.168.1.101:8080/g' /etc/nginx/nginx.conf nginx -s reload ```故障时直接执行bash /opt/script/switch_to_backup.sh,1分钟内即可恢复业务访问,无需等待根因定位。
四、故障固化:降低后续排查难度的优化动作
每次故障解决后完成3件事,避免后续重复踩坑:
- 将本次故障的现象、排查步骤、解决方案、根因录入故障知识库,后续同类故障直接对照处理
- 每季度更新一次基线配置包、排查工具集、兜底切换脚本,确保和当前系统版本匹配
- 每半年开展1次故障模拟演练,覆盖磁盘满、慢查询、进程挂掉等常见场景,提升排查熟练度