当运维人员盯着终端里滚动的日志,最怕的不是警报声响起,而是那种长时间的死寂——仿佛服务器正在运行中,却又像一座沉默的孤岛。真正的监控,从来不是看那些跳动的绿色指示灯,而是在平静表面下捕捉那些即将崩坏的细微征兆。以下是经过实战检验的七大监控要点,它们能帮你把“疑似故障”变成“提前预判”。
一、CPU不是看占用率,而是看“排队长度”
很多监控面板会把CPU使用率画成一条光滑的曲线,但这条曲线极具欺骗性。当服务器正在运行中,CPU可能显示60%的占用,但真正的危险信号是运行队列(load average)与核心数的比值。如果这个比值持续超过3.0,意味着任务在排队等待执行,即便CPU占用率不高,响应时间也会指数级恶化。更关键的是观察上下文切换次数——每秒超过10万次切换,往往预示着锁竞争或过度线程化,这比单纯的占用率飙升更值得警惕。
二、内存监控的盲区:换页与OOM Killer
大多数人盯着“可用内存”这个数字,这是最浅层的判断。真正的内存健康要看swap使用率的变化趋势——如果swap写入量在缓慢增长,即使可用内存还有几十GB,也说明热数据正在被挤压到磁盘,性能将出现滑坡。更要命的是OOM Killer的触发记录,它不会出现在常规的性能图表里,只会静静躺在系统日志中。当服务器正在运行中突然出现某个进程被kill,不要只重启服务,必须检查cgroup的内存限制是否过紧,或是存在内存泄漏的代码路径。
三、磁盘I/O:等待时间比吞吐量更致命
吞吐量(IOPS)高低不代表好坏,I/O等待时间(await)才是核心指标。如果SSD的平均服务时间超过20毫秒,机械硬盘超过100毫秒,就意味着存储层正在拖累整个应用。另一个极易被忽略的是磁盘队列深度——当队列深度持续大于硬件标称的并发能力时,再高的IOPS也只是虚假繁荣。请务必监控每个分区而非整块磁盘,因为一个日志分区写满,会拖垮整个文件系统的元数据操作。
四、网络监控:重传率比带宽占用更早暴露风险
带宽使用率到90%才报警?那就太晚了。真正的杀手是TCP重传率——当重传率超过0.5%时,即使带宽还有大量余量,用户也会感受到明显的卡顿。这通常不是链路带宽不够,而是网卡缓冲区溢出、交换机丢包或驱动bug。此外,监控TCP连接状态分布同样重要:如果TIME_WAIT连接数持续超过5万,会耗尽本地端口,导致新连接无法建立。记住,服务器正在运行中不代表网络健康,只有零重传才是真正的稳定。
五、进程与线程:僵尸进程是系统的暗疮
监控工具常显示“进程数”,但很少人区分僵尸进程和不可中断睡眠进程。僵尸进程不消耗CPU,却占着PID和进程表项,数量多了会导致无法创建新进程。而不可中断睡眠(D状态)进程如果长期存在,多半是磁盘I/O或NFS挂载出现问题。更深入一层,要监控线程数变化——如果某个Java应用的线程数从200缓慢爬升到1000且不回落,这是内存泄漏或连接池泄漏的典型前兆,比堆内存使用率更早暴露问题。
六、温度与硬件健康:被忽视的软性故障
机房空调坏了,服务器不一定立刻宕机,但CPU核心温度会悄然升高。当温度超过85摄氏度(Intel)或90摄氏度(AMD),CPU会自动降频,导致性能凭空下降30%而不报任何错误。请务必通过IPMI或带外管理监控机箱温度、风扇转速和电源电压。特别是电源的+12V电压波动超过5%,意味着电源模块正在老化,这种故障往往是间歇性的,极难排查。当服务器正在运行中却偶尔出现重启,先查硬件日志,别急着怀疑系统配置。
七、应用日志的“慢日志”比错误日志更值钱
错误日志是事后补救,而慢查询日志和API响应时间分位数才是事前预警。一个典型的陷阱是:平均响应时间正常,但P99(99分位)延迟超标。这说明有1%的请求正在经历严重阻塞,而这部分请求往往来自核心交易链路。监控长事务或慢SQL的数量变化,比单纯看某个SQL执行了多久更有意义——当慢SQL数量每小时翻倍时,说明数据库的统计信息已经过时,或者数据量增长触发了执行计划劣化。
以上七个要点,每一个都指向同一个事实:服务器正在运行中,并不意味着它处于健康状态。真正的运维高手,看的不是当前数值,而是数值的变化斜率。把监控从“告警驱动”升级为“趋势驱动”,你才能真正掌控数据中心的脉搏。下一次当监控面板一切正常时,不妨静下心来,去翻一翻那些被忽略的计数器——那里藏着服务器无声的呐喊。
——全球新闻资讯,专业新闻媒体合作服务提供商