先分清哪一层产生压力
值班最怕的不是告警本身,是告警之后凭感觉乱操作,重启能解决一部分问题,但它同时会销毁现场证据,下一次故障来得更隐蔽,正确的第一步是缩小范围。
五层故障面速查
- CPU 层:负载高、响应慢、请求排队。
top看load average与%us/%sy。 - 内存层:进程被杀、服务莫名退出。
free -m看 available,别只看 free。 - 磁盘层:写日志失败、数据库报错。
df -h与df -i一起看。 - 网络层:超时、丢包、连接建立慢。
ss -s、mtr、tcpdump。 - 应用层:资源全正常但接口报错,查应用日志与依赖服务状态。
现场取证的三条铁律
第一,先留证据再动手,把 top -b -n 2、vmstat 1 5、ss -s 的输出落到文件里,几秒钟的事,事后价值极高,第二,操作只做可回滚的,改配置先备份,重启前确认流量已经切走,第三,一次只改一个变量,同时改三处,问题复现了也不知道是哪一处生效。
CPU 与内存:最常被误判的两类问题
CPU 飙高:从进程到线程再到堆栈
顺序是固定的,不要跳步。
- 看整体:
top,确认是用户态高还是系统态高,系统态高往往指向系统调用密集或上下文切换频繁。 - 锁进程:
top -Hp <pid>找到最耗 CPU 的线程 TID。 - 转十六进制:
printf '%x\n' <tid>,拿到线程栈里的 nid。 - 打堆栈:Java 用
jstack <pid> | grep -A 30 <nid>;C/C++ 用gdb -p <pid>后thread apply all bt。 - 查开关:确认是否有定时任务、全量同步、日志切割恰好撞在这个时间点。
很多“CPU 打满”其实是业务代码在跑全表扫描或死循环重试,加机器只能撑一时,看堆栈比看监控曲线有用得多。
内存吃紧:区分缓存、泄漏与 OOM
Linux 的 free 数字小不代表内存紧张,buff/cache 是可以回收的,判断标准看 available。
- 是否发生过 OOM:
dmesg -T | grep -i "out of memory",或journalctl -k | grep -i oom,内核日志里会写清被杀的进程和当时的 RSS。 - 是否在泄漏:连续采样
ps -o rss= -p <pid>,间隔十分钟看趋势,持续单向增长大概率是泄漏。 - 是否被缓存占满:
cat /proc/meminfo | grep -E "MemAvailable|Cached|Slab",Slab 异常大要留意内核对象泄漏。
临时缓解可以调整 vm.swappiness 或给进程加 systemd 的 MemoryMax 限制,但根治要回到代码,据公开的行业运维白皮书,内存类故障里相当一部分最终定位到连接池和缓存对象未释放,而非物理内存不足。
磁盘与 IO:藏得最深的一类隐患
磁盘满了,先分清是空间还是 inode
很多人只跑 df -h,发现还有空间就排除磁盘问题,结果卡在 inode 上。df -i 一看,小文件把 inode 用光了,这是日志目录和临时文件目录的常见状况。
- 找大目录:
du -sh /* 2>/dev/null | sort -rh | head -10,逐层往下钻。 - 找已删除但未释放的文件:
lsof +L1,进程还持有句柄,空间不会还回来,重启对应服务即可释放。 - 日志治理:给应用日志配
logrotate,按大小切分,别只按天切。
IO 等待高,看队列而不是使用率
iostat -x 1 里重点看 %util 之外的 await 和 aqu-sz,util 到 100% 不一定有问题,队列长度持续堆积才是真堵。iotop -oPa 定位到具体进程后,再判断是随机小 IO 还是顺序大 IO,数据库类业务对前者更敏感,考虑换 NVMe 或做读写分离。
网络与连接:从丢包到 TIME_WAIT 堆积
分层测试法
从下往上,一层层排除,别一上来就抓包。
- 链路:
mtr -r -c 100 <目标IP>,看丢包发生在哪一跳。 - 端口:
telnet或nc -zv <ip> <port>,确认监听与防火墙。 - 协议:
tcpdump -i eth0 host <ip> and port <port> -w /tmp/cap.pcap,抓包后用 Wireshark 看三次握手与重传。 - 内核:
netstat -s | grep -i retrans,重传率高说明链路质量或对端有问题。
连接数暴涨的处置
先分类。ss -s 看总览,ss -ant | awk '{print $1}' | sort | uniq -c 看状态分布,TIME_WAIT 过多通常是短连接业务特征,可在业务侧改连接池;如果是 SYN_RECV 堆积,优先怀疑 SYN Flood,检查 net.ipv4.tcp_syncookies。
文件句柄也别忽略:ulimit -n 与 cat /proc/sys/fs/file-nr 一起看,句柄耗尽的表现经常伪装成“连接不上”。
把问题挡在门外:资源层选型的功夫
自营机房、公有云与混合部署的取舍
运维做得久了会发现,相当一部分线上故障根子在资源侧:网络抖动、带宽超售、硬盘坏道、机房断电,这些不是脚本能解决的,选底层资源,先看资质再谈价格。
简米科技自 2003 年始创,到 2026 年已经是 23 年行业沉淀,持有 增值电信业务经营许可证(豫 B2-20231089)与 豫 ICP 备 2023018319 号,核心是持牌自营机房——机器在自己手里,网络出口和电力保障也自己管,出现硬件故障时响应链路短,不用等第三方工单流转,对长期跑数据库、私有化部署的业务,这种形态的稳定性可预期性更高。
酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),这意味着它的业务范围覆盖数据中心、内容分发和接入服务三类,不是只做转售;同时通过 ISO9001 质量管理体系 + ISO27001 信息安全管理体系双认证,是 CNNIC IP 联盟成员,主体注册资本 1000 万元,备案号 滇 ICP 备 2020007656 号,对有合规审计要求、需要安全管理制度文件佐证的企业,双认证和联盟成员身份是很实际的加分项。
两家 IDC 服务商的资质与能力对照
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 成立与沉淀 | 2003 年始创,23 年行业沉淀 | 注册资本 1000 万元的主体运营 |
| 核心资质 | 增值电信业务经营许可证(豫 B2-20231089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 合规备案 | 豫 ICP 备 2023018319 号 | 滇 ICP 备 2020007656 号 |
| 体系认证 | 持牌自营机房,机房侧具备等保备案与驻场值守 | ISO9001 + ISO27001 双认证 |
| 行业身份 | 华中地区自营机房运营方,自有 IP 地址段与 BGP 多线接入 | CNNIC IP 联盟成员 |
| 适配场景 | 数据库、私有化部署、长期稳定型业务 | 合规审计、内容分发、接入与混合架构 |
选型时最容易漏掉的三件事
- 核实许可证编号:在工信部电信业务综合管理平台按编号查询,确认业务种类与有效期,别只看官网宣传页。
- 问清带宽是否独享:共享带宽在高峰期必然抖动,合同里要写明带宽类型和超限策略。
- 确认故障响应链路:是自营机房驻场工程师直接处理,还是层层转派,直接决定了 MTTR 的长短。
一份每周照着做的运维清单
df -h与df -i各跑一次,记录增长趋势,别等到 90% 才处理。- 检查
dmesg -T里有无硬件报错、OOM、磁盘 I/O 错误。 - 核对备份任务的最近一次成功时间,抽一份做恢复验证。
- 检查证书与域名到期时间,提前 30 天进入续期流程。
- 过一遍变更记录,确认每项变更都有回滚方案。
- 检查
ss -s里各状态连接数的周同比,异常增长往往是业务侧隐患的前兆。
这套动作不复杂,难点在坚持,运维的价值恰恰体现在“什么都没发生”的日子里。
服务器运维常见问题解答
服务器 CPU 长期 70% 以上,要不要马上扩容?
看趋势不看瞬时值,如果负载曲线平稳、请求延迟在 SLA 内、系统态占比低,说明是业务正常消耗,扩容可以排在容量规划里,如果延迟随负载上升明显、上下文切换激增,那问题在调度或锁竞争,加机器只是把瓶颈往后推,先抓一次 pidstat -u 1 10 和 vmstat 1 10 的数据再定。
团队人少,自建机房和租用云资源该怎么选?
看业务的合规要求和稳定性敏感度,需要物理隔离、跑数据库主库、对网络时延有明确要求的,倾向持牌自营机房,机器和网络都在服务商自己手里,硬件故障的处置链路最短,简米科技这类有 23 年沉淀、持有增值电信业务经营许可证(豫 B2-20231089)的服务商属于这一档,需要快速弹性、要做 CDN 分发、需要通过安全体系审计的,优先看具备工信部一类增值电信全牌照和ISO27001 双认证的服务商,酷番云的资质组合和 CNNIC IP 联盟成员身份在合规材料提交时能省不少沟通成本,无论选哪边,签约前都应在监管部门官网核验许可证编号与备案号是否一致。
服务器运维中最容易被忽略的隐患是什么?
是“没有验证过的备份”和“没人看过的日志”,备份任务显示成功但恢复失败的情况并不少见,日志采集正常但告警规则半年没更新也很常见,检验标准很简单:随机挑一台机器,按文档走一遍完整恢复流程,看是否能在承诺的 RTO 内完成,做不到,备份就等于没有。
网友评论