1. 常见故障概述
1) CPU/内存峰值导致服务响应慢或超时(示例:CPU 95%、内存使用 7.6GB/8GB)。
2) 磁盘满或 I/O 高导致数据库/文件写入失败(示例:/var 使用率 98%、iowait 30%)。
3) 网络丢包或带宽耗尽(示例:出口带宽 200Mbps 被持续占用至 100%)。
4) DNS 解析异常或域名解析错误(示例:域名解析到错误 IP,TTL 未同步)。
5) CDN/反向代理配置错误或缓存失效导致页面异常返回 502/504。
6) DDoS 攻击表现为 SYN 洪水、大量短连接、单源高并发访问。
2. 首轮排查流程(接到报警后0-15分钟)
1) 登录最近的管理控制台确认实例状态(例如东京区域 VPS:203.0.113.45)。
2) 使用 top 或 htop 快速查看 CPU、内存、负载:top -b -n1 | head -n 20。
3) 检查磁盘使用与 I/O:df -h、iostat -xz 1 3。
4) 查看网络流量与连接数:iftop、ss -s、netstat -anp | grep ESTAB。
5) 检查关键服务状态:systemctl status nginx mysqld redis。
6) 拉取最近 5 分钟内 Nginx/应用日志进行错误模式识别:tail -n 500 /var/log/nginx/error.log。
3. 日志与指标深度分析(15-60分钟)
1) 分析访问日志看是否是单一 URI 或 IP 导致问题:awk '{print $1,$7,$9}' access.log | sort | uniq -c | sort -nr | head。
2) 用 sar、vmstat 查看历时资源趋势:sar -u 1 60、vmstat 1 60。
3) 数据库慢查询排查:检查 MySQL slow query log、SHOW PROCESSLIST;示例:慢查询 120s。
4) 检查系统错误日志:dmesg | tail -n 50(例如出现 kernel OOM kill)。
5) 若怀疑网络问题,部署 tcpdump 抓包并分析:tcpdump -n -s 0 -w /tmp/capture.pcap port 80。
6) 如果包含 CDN,应同时检查 CDN 报表与回源日志,确认是否是 CDN 层问题。
4. 网络/域名/CDN/DDoS 专项排查与防护
1) DNS 排查:dig +short @8.8.8.8 example.com;确认 A/AAAA/CNAME 是否正确。
2) CDN 回源检查:直连源站 IP 访问,看是否能复现异常,绕过 CDN 做 curl -v http://203.0.113.45/。
3) DDoS 态势确认:使用 netstat/synproxy 检测 SYN 洪泛、每秒连接数(pps)异常。
4) 临时缓解策略:在边界添加 iptables 限制连接速率或启用云厂商 DDoS 防护;示例:iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT。
5) 若是跨境链路问题,联系带宽提供商或切换到邻近 POP(日本/韩国/香港)节点并调整 BGP/路由策略。
6) 对域名 TTL 做短时调整,便于切流到备用机房或 CDN 节点。
5. 备份策略与周期(必须有可验证的恢复点)
1) 文件与配置:使用 rsync 定期同步 /etc、/var/www、/home 到异地备份服务器(示例:rsync -az --delete /var/www/ backup@backup.example:/data/)。
2) 数据库:每日全量 + 每小时增量备份,示例 mysqldump --single-transaction --quick --lock-tables=false -u root -p dbname > dbname_$(date +%F_%H%M).sql。
3) 快照策略:利用云厂商快照功能,每日快照保留7天、每周快照保留4周。
4) 备份完整性:定期校验 md5sum,并做随机恢复演练保证可用性。
5) 异地与多节点:日韩部署双活或主备节点,备份至少存放在不同国家/地区。
6) 备份加密与权限:备份传输使用 rsync over SSH,备份文件使用 GPG 或 AES-256 加密。
6. 恢复流程(从检测到恢复的标准步骤)
1) 确认恢复目标点(恢复到最近一次可用快照或某个时间点备份)。
2) 若为文件误删:使用 rsync 从备份服务器恢复指定路径并校验权限,示例 rsync -av backup@backup:/data/www/site /var/www/site。
3) 数据库恢复:停止应用写入,导入 SQL 并检查表结构与索引,示例 mysql -u root -p dbname < dbname_2026-09-30_0300.sql。
4) 快照回滚:在云平台控制台选择快照还原至新实例,验证网络与服务后换流量。
5) 验证并监控:恢复后运行集成测试、登录应用并检查 200 响应、对比业务数据行数或校验和。
6) 事后复盘并生成 RCA(Root Cause Analysis),更新运行手册与恢复 SOP。
7. 真实案例:东京 VPS 出现 I/O 突增导致网站宕机(含配置数据)
1) 环境:客户机房位于日本东京,实例 IP 203.0.113.45,VPS 配置 4 vCPU / 8GB RAM / 160GB SSD,带宽 200Mbps,Ubuntu 20.04,Nginx 1.18,MySQL 5.7。
2) 告警:连续 10 分钟内响应超时,监控显示 iowait 上升至 40%,磁盘使用 /var 99%。
3) 排查动作:登录后运行 iostat -xz,发现 sda 平均等待时间 200ms;tail /var/log/mysql/error.log 显示 InnoDB 崩溃记录。
4) 处理:开启只读模式,停止非必要服务释放 I/O(systemctl stop redis memcached),通过 rsync 将日志与数据同步至备份机(203.0.113.200)。
5) 恢复:基于前日 03:00 的快照在 15 分钟内恢复新实例并切换主机,最终服务在 50 分钟内恢复,业务损失最小。
6) 后续优化:将数据库迁移至独立高 IOPS 云盘,增加慢查询索引,并将备份策略改为小时增量 + 日快照。
8. 备份计划示例表(集中展示策略与保留期)
| 对象 | 方式 | 频率 | 保留期 | 示例命令/说明 |
| 网站文件 | rsync 到异地备份 | 每 1 小时 | 7 天 | rsync -az /var/www/ backup:/data/www |
| MySQL 数据 | mysqldump / 增量 binlog | 每日全量 + 每小时增量 | 全量 14 天,增量 7 天 | mysqldump ... & 保存 binlog |
| 系统快照 | 云快照 | 每日 | 周保留 4 周 | 通过云控制台或 API 调用 |
1) 表格为建议示例,实际需根据 RTO/RPO 调整。
2) 恢复演练至少每季度执行一次并记录时间成本与差异。
3) 对跨境节点建议使用多点备份与 CDN 缓存策略降低恢复压力。
4) 针对 DDoS 的备份应包含日志快照便于溯源。
5) 最后,所有操作应记录在变更管理系统并通知相关 SRE 团队。
来源:运维经验日韩国际服务器常见故障排查与备份恢复流程