惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
月光博客
月光博客
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
U
Unit 42
腾讯CDC
爱范儿
爱范儿
J
Java Code Geeks
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
B
Blog
Stack Overflow Blog
Stack Overflow Blog
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 寒魔影

Linux waitpid函数分析 不同进程内相同的变量内存地址是相同的 Linux 内存虚拟地址介绍 Sword B树学习笔记二 Sword B树学习笔记一 defined but not used警告屏蔽 apisix流量高峰期服务卡住问题 服务卡死现象分析实录 Linux 常用命令四 TCP全连接队列 调用writev收到信号SIGPIPE问题分析记录 epoll_wait监听事件延迟问题记录 writev发送数据失败 C++ new关键字运算符重载 Missing separate debuginfos类型崩溃分析 宏定义导致数据异常问题 服务压测偶现卡住问题分析 C语言 数据类型 Linux 终端光标控制函数
服务资源加载延迟异常增加
寒魔影 · 2025-04-29 · via 博客园 - 寒魔影

问题描述

昨天线上遇到一个奇怪的问题,发现服务读取资源延迟突然变高,我们的服务使用的是共享文件系统。资源更新时间是08:40左右

问题分析

第一步
分析:检查cpu,内存,磁盘使用率指标
结论:未发现异常(其实8:40磁盘IO骤然下降,这个也是不合理的,当时没有发现)

第二步
分析:服务恢复关闭模型资源,怀疑模型资源导致异常,但是模型资源更新到服务产生问题期间有1小时左右的时差
结论:未发现确定证据,放弃怀疑资源

第三步
分析:怀疑是某些特殊的请求导致了延迟高,对请求进行数据分析
结论:同事分析下来没有啥统一规律,现在回想一下这个思路不正确,请求导致的延迟高不会影响加载资源耗时

第四步
分析:疑是内存太少引发问题,因为是计算密集型服务,对内存资源消耗比较大,
机器上的空闲内存都在1G左右,是不是因为空闲内存太少,导致page cache不断置换,
每次都要去共享文件系统读文件,引发延迟高?
结论:找了反例,有一台机器空闲内存还有10G+,仍然出现问题

第五步
分析:期间发现宿主机上有安装杀毒软件,怀疑杀毒软件影响资源读取
结论:卸载杀毒软件,未能解决问题

第六步
分析:维护共享文件系统同事反馈出问题的时间段,磁盘IO反常下降,这个不合理。
IO下降?读阻塞?继续观察系统文件相关信息,发现文件描述符的增长有异常,
文件描述符的增加趋势跟服务出问题的时间段完美匹配,怀疑模型资源更新导致文件描述符异常增长,
文件描述符异常增长又影响了共享文件系统.
结论: 按照上面思路,重新加载模型资源,发现文件描述符果然出现了增加,使用有问题的模型长时间压测,直到文件描述符的增加一定阈值,复现了服务延迟增加问题.

总结

这次问题分析耗时三天,定位多次陷入绝境,我的失误有以下几点
一、这次出现问题为啥没有直接怀疑模型问题,主要是模型更新后问题爆发在2h之后,一般认为模型是只读资源不会影响耗时,从目前看来这个理解有误。
二、自身知识点掌握不够全面,异常增长的文件描述符可能会影响操作系统的读写,这个确实是一个知识盲区。
三、加载资源慢,还是首先需要看磁盘读写情况,最好精确到进程级别。读取资源频繁,磁盘IO异常的高,肯定是系统资源不够,需要扩容解决,但是磁盘IO比较低也不合理,需要考虑当前系统的状态(系统负载,文件描述符,CPU,内存)