遵循以下原则可大幅提升排障效率,避免扩大故障范围。
- 先软后硬:优先检查软件配置、服务状态,再排查硬件设备(如硬盘、内存)。
- 先外后内:先确认外部网络、电源等基础连接,再深入服务器内部系统。
- 先主后次:优先解决核心服务(如数据库、Web 服务)的故障,再处理次要问题。
- 记录过程:全程记录排查步骤、命令输出和结果,便于回溯或寻求协助。
先排除最直观、最易忽略的底层问题。
- 电源与硬件状态
- 检查服务器电源灯是否正常,机房 UPS 是否供电稳定。
- 观察硬件指示灯:硬盘(是否闪烁异常)、内存(是否报错亮灯)、网卡(是否有数据传输灯)。
- 若有报警声,对照服务器手册判断故障部件(如内存故障常伴随特定蜂鸣码)。
- 网络连接检查
- 本地验证:用网线直连服务器,测试是否能 ping 通(
ping 服务器IP)。
- 链路排查:检查交换机端口是否启用、网线是否松动或损坏,更换网线 / 端口重试。
- 远程访问:若无法远程连接(如 SSH、RDP),先确认本地是否能正常登录,排除网络策略或防火墙拦截。
确认基础层正常后,聚焦操作系统本身。
- 服务器是否可登录
- 本地登录:直接连接显示器和键盘,查看是否能进入系统,有无蓝屏、卡在启动界面等情况。
- 安全模式:若无法正常启动,尝试进入安全模式(Linux 单用户模式、Windows 安全模式),排查驱动或启动项问题。
- 系统资源检查
- 查看 CPU、内存、磁盘使用率:
- Linux:用
top(实时)、df -h(磁盘)、free -h(内存)命令。
- Windows:打开 “任务管理器” 或 “资源监视器”,重点关注是否有进程占用过高资源。
- 检查磁盘空间:若磁盘满(使用率 100%),优先删除日志、临时文件(如 Linux 的
/var/log目录)释放空间。
系统正常后,定位具体服务的故障。
- 服务状态验证
- 查看服务是否运行:
- Linux:
systemctl status 服务名(如systemctl status nginx),若未运行,用systemctl start 服务名启动并检查报错。
- Windows:打开 “服务” 面板(
services.msc),查看目标服务的 “状态”,若停止,尝试启动并查看 “启动类型” 是否正确。
- 日志分析(关键步骤)
- 日志是定位故障的核心依据,常见日志路径:
- Linux:系统日志(
/var/log/messages)、应用日志(如 Nginx 日志/var/log/nginx/error.log)。
- Windows:事件查看器(
eventvwr.msc),重点查看 “系统” 和 “应用程序” 日志中的错误项(红色叉号)。
- 搜索关键词:在日志中搜索 “error”“fail”“timeout” 等关键词,定位故障时间点和具体原因(如配置文件错误、端口被占用)。
- 端口与依赖检查
- 确认服务端口是否被占用:
- Linux:
netstat -tulpn | grep 端口号(如netstat -tulpn | grep 80)。
- Windows:
netstat -ano | findstr 端口号,若被占用,结束对应进程(taskkill /PID 进程号 /F)。
- 检查服务依赖:如 Web 服务依赖数据库,需先确认数据库是否正常运行、连接地址和密码是否正确。
若上述步骤未解决,需检查配置和外部环境。
- 配置文件验证
- 确认服务配置文件是否正确:如 Nginx 的
nginx.conf、MySQL 的my.cnf,可对比备份文件(如nginx.conf.bak),或用服务自带命令检查语法(nginx -t检查 Nginx 配置)。
- 权限检查:确保服务进程对配置文件、日志目录有读写权限(如 Linux 中
chown -R 用户名:用户组 目录)。
- 外部环境与更新
- 检查是否有最近的系统更新、软件升级,回滚到上一个稳定版本(如 Linux 用
yum history undo回滚 yum 更新)。
- 确认外部依赖是否正常:如 API 接口、存储服务(如 NAS)是否可访问,防火墙规则是否有变更。
减少故障发生频率,需做好日常维护。
- 定期备份:备份系统配置、数据库数据,设置自动备份(如 Linux 用
crontab定时执行备份脚本)。
- 监控预警:部署监控工具(如 Zabbix、Prometheus),实时监控 CPU、内存、磁盘使用率,设置阈值预警(如磁盘使用率达 90% 时发邮件提醒)。
- 规范操作:避免在生产服务器上进行测试操作,修改配置前先备份,定期更新系统补丁(需在非业务高峰期执行)。