排障中的三不原则
排障时最危险的不是技术难题,而是手太快:在没定位根因前重启核心设备、随手关闭安全机制、一次性批量改配置,都会把可定位的问题变成不可复盘的事故。稳妥的顺序是先保住现场与证据,再设计一次只改一个变量、随时可回退的最小变更,改完立刻验证并记录。这条原则在所有网络排障条目里都成立,因为它保护的是你后续判断的可靠性。
基本信息
| 三不原则 | 不先重启、不先大改、不先删证据 |
|---|---|
| 最小变更 | 一次一个变量,改前记录,改后立即验证 |
| 可回退 | 改前备份配置,保留一条可用的独立管理通道 |
| 合规 | 抓包涉及用户数据要按内部合规流程处理 |
| 适用场景 | 生产环境任何需要动手的排障动作 |
典型使用场景
- 间歇故障尚未定位:先加观测再谈改动,避免重启掩盖问题
- 需要在业务时段做调整:改为低影响时段执行并提前准备回退方案
- 怀疑安全策略拦截:先用计数器或抓包证实,再决定是否调整策略
- 变更窗口内回归验证:按清单逐项核对,不夹带其他改动
- 远程操作核心设备:先确认带外通道可用再动手
安全的测试性变更姿势
安全的测试性变更姿势
cp -a /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%s) # 改前留备份
nginx -t # 语法校验
git diff --stat # 若配置在 Git 中
ss -s > /tmp/before.txt && ip -s link > /tmp/link.before.txt # 改前留状态快照
diff -u /tmp/before.txt <(ss -s) # 改后立即对比
tcpdump -i any -nn -c 20 -w /tmp/verify.pcap 'tcp port 443' # 验证时顺手取证高危动作与替代做法
| 高危动作 | 风险 | 替代做法 |
|---|---|---|
| 未定位就重启设备 | 现场消失,故障可能延后复现 | 先抓状态与日志再重启 |
| 一次性批量改配置 | 无法归因且难以回滚 | 一次一项,逐项验证 |
| 关闭安全机制验证 | 暴露面扩大,可能被利用 | 用计数器或抓包证实后再收窄策略 |
| 直接清空连接表 | 业务中断且失去现场 | 先导出连接快照再清理 |
| 在高峰期顺手优化 | 把小问题放大成事故 | 排入变更窗口并准备回退 |
「重启试试」对间歇性故障经常有效但极具欺骗性:现象消失不等于修复,可能是故障进入潜伏期,而现场证据(内核状态、连接表)已经消失。