处女膜破了什么症状| 破瓦法是什么| 10.1什么星座| 十二月二十七是什么星座| 一个石一个夕念什么| 颈动脉斑块是什么意思| 儿童办理身份证需要什么材料| 装藏是什么意思| 大便咖啡色什么原因| 冠脉cta主要检查什么| 眼睛红红的是什么原因| 扁平足是什么| 明五行属什么| 刚生完孩子的产妇吃什么水果好| 尿检粘液丝高什么意思| 献血有什么要求| 小根蒜学名叫什么| 为什么一个月来两次姨妈| 什么是七杀命格| 龟头炎用什么软膏最好| qq邮箱的格式是什么| 做梦捡钱是什么预兆| 5年生存率是什么意思| 紧张手抖吃什么药| 淋巴细胞百分比高是什么原因| 血压高什么症状| 子宫肌瘤术后吃什么好| 梦见棺材是什么意思| 什么时间量血压最准确| 杏花什么季节开| 纪梵希属于什么档次| 女生排卵期是什么意思| 散光跟近视有什么区别| 经常呕吐是什么原因| 褥疮用什么药| 春天有什么花开| 八月二号是什么星座| 捡到金子预示着什么| 副鼻窦炎是什么意思| 芒果什么人不能吃| 男人脚肿是什么原因| 轻微脑震荡有什么表现| 为什么来姨妈左侧输卵管会痛| 猪肉和什么菜搭配最好| 对应是什么意思| 果粉是什么意思| asmr是什么| 1998年五行属什么| 治疗狐臭最好的方法是什么| 宫外孕什么意思| 氮气是什么| 甘露醇有什么作用| 什么动物没有尾巴| 母公司是什么意思| 马步鱼为什么是甜的| 抖m是什么| 沈阳是什么省| 生蚝有什么功效与作用| w代表什么单位| 滋润是什么意思| 内敛是什么意思| 女人骨质疏松吃什么最好| 西湖醋鱼是什么菜系| 我能做什么| 左腰疼痛是什么原因男性| 肛门痛是什么原因| 郭敬明为什么叫小四| 肺部结节有什么症状| 人工授精是什么意思| 吃什么补脑子增强记忆力最快| 香蕉与什么食物相克| 为什么会子宫内膜增厚| 口腔上火了吃什么降火最快| a型rh阳性是什么意思| 红烧肉可以放什么配菜| 焦虑什么意思| 每个月月经都推迟是什么原因| 2008年属什么生肖| 孕妇梦见鱼是什么意思| 弯刀裤适合什么人穿| 童心未泯什么意思| 吃什么最补钙| 鲁肃的性格特点是什么| 对口升学什么意思| pm代表什么| 八月13号是什么星座| 女为悦己者容是什么意思| 另起炉灶是什么意思| 艾灸是什么东西| 血小板低是什么问题| cim是什么意思| 射手座有什么特点| 帝女花讲的是什么故事| 考法医需要什么条件| 老年人喝什么牛奶好| 北齐是什么朝代| 气得什么| 古埃及是什么人种| snp是什么意思| 肛门疼痛用什么药| 忌动土是什么意思| 满天星的花语是什么| 怀孕有什么现象| 血糖的单位是什么| 藿香正气水不能和什么药一起吃| 孩子是ab型父母是什么血型| 鋆字五行属什么| 高考明天考什么| 做肠镜需要准备什么| 杨梅有什么功效与作用| 夏天喝什么汤| 了是什么词性| 降钙素原检测是什么| 翡翠和玉石有什么区别| TA什么意思| 甲亢吃什么食物最好| 姜太公钓鱼愿者上钩是什么意思| 刚怀孕初期吃什么好呢| 菠萝蜜的核有什么功效| 梦遗是什么原因| 黑发晶五行属什么| 性格开朗是什么意思| 什么时候出伏| e代表什么数字| 维生素c是补什么的| 室内用什么隔墙最便宜| 壅是什么意思| 牛肉粉是什么调料| 乙肝245阳性是什么意思| 房颤吃什么药好| 半斤八两什么意思| 一年四季是什么生肖| 头皮痛什么原因| 生姜和红枣煮水喝有什么作用| 形而上学什么意思| 门道是什么意思| 大腿根部痒是什么原因| 戾气是什么意思| 类风湿吃什么药有效| 眼睛疼用什么药| 报销什么意思| 尿白蛋白高是什么原因| 为什么打哈欠会流泪| 创伤弧菌用什么抗生素| 干燥综合症吃什么药| 胆酷醇高有什么危害| bishop是什么意思| 太极贵人是什么意思| 肌酐激酶高是什么原因| 蝎子喜欢吃什么| 夏令时是什么| 咳出痰带血是什么原因| 如意丹的作用是什么| 属虎的和什么属相最配| 什么是消炎药| 美女是什么意思| 新生的什么| 跑单是什么意思啊| 植物有什么| 宽字五行属什么| 三级警督是什么级别| 牛仔布料是什么面料| 欢是什么动物| 3月20日什么星座| 偷窥是什么意思| 籺是什么意思| 肺炎不能吃什么| 早上起床腰疼是什么原因| 什么人不能吃秋葵| 塞浦路斯说什么语言| 续弦是什么意思| 吃什么水果会变白| 5到7点是什么时辰| 婷婷玉立什么意思| 海参吃什么| 小孩个子矮小吃什么促进生长发育| 危楼高百尺的危是什么意思| 故是什么意思| 比围是什么| 什么宠物好养| 嬗变什么意思| 长期喝咖啡有什么危害| 大学团委书记什么级别| 幽门螺旋杆菌阳性什么症状| 什么是童话故事| 原是什么意思| 什么是静脉曲张| 脑血管堵塞吃什么药最好| 浮世清欢什么意思| 6月29什么星座| 大刀阔斧是什么意思| 幼稚细胞是什么意思| 来月经头疼吃什么药| 不靠谱是什么意思| 艾叶煮水喝有什么功效| 匀字五行属什么| 巡视员什么级别| 柚子什么时候成熟| 除湿气用什么药| 糖类抗原153是什么| 宫颈糜烂用什么药好得快| 为什么一睡觉就做梦| 目赤肿痛吃什么药最好| 什么的森林| 原发性高血压什么意思| 什么窃什么盗| 神经外科治疗什么病| 四川为什么叫四川| 补维生素吃什么药最好| 一岁宝宝口臭是什么原因引起的| 乌龙茶是什么茶| 吃什么养肝护肝最好| 关节炎吃什么药好得快| 小囊肿是什么病严重吗| 7月7日是什么纪念日| 悲观是什么意思| 劲头是什么意思| 女儿红是什么酒| 痔核是什么| 凌晨十二点是什么时辰| 胎停是什么原因造成的| 范思哲是什么品牌| 颈椎退行性变是什么意思| 已加一笔是什么字| 鸭吃什么食物| 头不由自主的轻微晃动是什么病| 慢性浅表性胃炎吃什么药| 什么叫自私的人| 甘油三酯高有什么危害| 血糖高要忌口什么| 嘴巴臭是什么原因| 月经量极少几乎没有是什么原因| 梦见中奖了预兆什么| 车仔面为什么叫车仔面| 傻白甜什么意思| 阴虱是什么| 塞肛门的止痛药叫什么| 甍是什么意思| 看日历是什么生肖| 孕妇为什么不能参加婚礼| 2007年五行属什么| 扪及是什么意思| 睡觉趴着睡什么原因| 三白眼是什么意思| 新股配号数量是什么意思| 倒霉是什么意思| 六安瓜片是什么茶| 生育酚是什么| 早上起床口臭是什么原因| 诗经是什么朝代的| 尿常规检查什么| 早上吃鸡蛋有什么好处| 祭祀什么意思| 什么人容易得胆汁淤积| 胆囊切除后对身体有什么影响| 包场是什么意思| 沙棘原浆什么人不能喝| 皇帝自称什么| 指导员是什么级别| 霸气是什么意思| 粥米是什么米| 发乎情止乎礼什么意思| 走马观花的走什么意思| 喝杨梅酒对身体有什么好处| 百度

测试驿栈-由浅入深学性能 测试环境 CPU 异常的分析定位

飞天小子的性能课堂 · 2025-08-05 · 最后由 小鱼向前冲~ 回复于 2025-08-05 · 9332 次阅读

概述

百度 除了获得国内读者和文学界的认可,《暗算》更是走出了国门,先后推出英文版、西班牙语版等不同语言版本。

12 月 30 号,天气晴,阳光明媚
今天下午项目就要上线了,我正在美滋滋的规划上线之后的生活。但是偏偏手贱,无意中打开了测试环境的服务器,发现了一个令人恐惧的事情,CPU 总利用率最高爆到了 150%。
宛如一道晴天霹雳击中我的天灵盖,瞬间冷汗直冒。明明昨天服务器还是正常的,没理由突然爆表啊?代码已经停止更新了呀,这不科学!

分析问题

下午就要上线了,这要是发到生产还得了?本着狗命要紧的态度,赶紧定位问题。
先看 top 的利用率分布


细看 CPU 单核的利用率,其实并不是很高,50% 左右。但是现在测试环境明明没有很多业务在执行。而且利用率几乎都分布在内核空间,这很明显不科学。

打印 cpu 热点
执行 perf top,看一下占用 cpu 最好的函数是什么

排名最高的是schedule,其次是system call after swapgs,第三是sched_yield。我们来分析一下这前三个排名的函数是做什么的
1.schedule:函数 schedule() 实现调度程序。它的任务是从运行队中找到一个进程,并随后将 CPU 分配给这个进程
2.system call after swapgs:这个函数是实现系统调用的。通常用户空间向内核空间发起请求时,必然会经历系统调用
3.sched_yield:在资源竞争情况很严重时,执行这个函数会主动放弃当前线程的 CPU 使用权,然后一个新的线程会占用 CPU

综上所述,可以大致猜测出问题的原因。一定是有大批量的任务在向内核请求系统调度,但是资源已经不足了,然后好死不死的又偏偏调用了 sched_yield 这个自毁函数,导致 cpu 的使用权被让出来。cpu 通过 schedule 函数玩命的调度切换。于是 cpu 就炸了。

定位问题

为了验证刚刚的猜测,这里做两步操作。
第一步:打印内核日志。结果发现内核里面全部在执行 sched_yield,放弃 cpu。

稍加思索之后,觉得应该改一个配置 ** /proc/sys/kernel/sched_compat_yield**
把这个配置从 0 改成 1,可以让 sched_yield() 系统调用更加有效,让它使用更少的 cpu。美滋滋的改完之后发现,cpu 利用率一点也没降下来。稍加思索之后想明白了,我的目的是阻断 cpu 调用 sched_yield() 而自爆,而不是让他调用的更加丝滑啊!这个方法行不通

第二步:打印线程堆栈

线程堆栈里面打印结果如下:

java.lang.Thread.State: RUNNABLE
at java.lang.Thread.yield(Native Method)
at com.lmax.disruptor.YieldingWaitStrategy.applyWaitMethod(YieldingWaitStrategy.java:58)
at com.lmax.disruptor.YieldingWaitStrategy.waitFor(YieldingWaitStrategy.java:40)
at com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)
at com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:159)
at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

中间那个lmaxYieldingWaitStrategy服务是个什么玩意?在脑海里面检索了五分钟也没想到到底是个什么服务。然后百度了一下,百度给出了下面这个结论

com.lmax.disruptor是个高效的的消息队列,YieldingWaitStrategy 是它的三种策略之一。哪三种策略?如下所述

com.lmax.disruptor.BlockingWaitStrategy
最低效的策略,但其对 CPU 的消耗最小,并且在各种部署环境中能提供更加一致的性能表现;

com.lmax.disruptor.SleepingWaitStrategy
性能表现和 com.lmax.disruptor.BlockingWaitStrategy 差不多,对 CPU 的消耗也类似,但其对生产者线程的影响最小,适合用于异步日志类似的场景;

com.lmax.disruptor.YieldingWaitStrategy
性能最好,适合用于低延迟的系统;在要求极高性能且事件处理线程数小于 CPU 逻辑核心树的场景中,推荐使用此策略;

but,这个消息中间件完全脱离了产品需求,从测试到产品没人知道有这么一回事。。。

由此可以判断出,开发应该是偷偷加了一个消息中间件,并且选用了第三种看起来性能最好的策略。但是忽略了一点,这种策略对 cpu 的压榨极高,尤其是 cpu 性能不好的时候,几乎能把 cpu 榨的一滴不剩。官网描述如下

中间那个 thread.yield 就可以解释我们之前在内核空间看到的 sched_yield() 函数调用。因为资源不够,所以调用这个函数去反复循环排队,导致死循环。
最后让开发先把代码注释掉了,自己本地慢慢调试策略吧。

结尾

这件事给了我们几个教训
1:直到上线前一分钟,都要对开发的一举一动保持高度警惕
2:开发同学不要自作聪明往代码里面加一些未经验证的小发明创造,然后美滋滋的等上线。上了就炸
3:性能测试人员要学会抽丝剥茧,保留证据,同时做好和开发死磕的准备

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

6 啊

看了感觉要走的路还有很长。赞!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
六味地黄丸什么时候吃最好 分分钟都妙不可言是什么歌 百合什么时候种植 跑步的配速是什么意思 白细胞偏高是什么意思
绌是什么意思 为什么一躺下就鼻塞 喀秋莎什么意思 月建是什么意思 联通查话费打什么号码
无后为大的前一句是什么 交警大队长是什么级别 夏至为什么吃馄饨 苹果什么季节成熟 吃什么能治脂肪肝
眼底充血是什么原因 双减是什么意思 花开富贵是什么生肖 有什么好吃的零食 儿童咳嗽吃什么药
簇新是什么意思hcv8jop5ns6r.cn 造影有什么危害hcv7jop7ns1r.cn 肝脏检查挂什么科hcv9jop3ns7r.cn 为什么会得甲减hcv7jop6ns3r.cn 女性乳房痒是什么原因xinjiangjialails.com
拿什么不用手hcv8jop7ns3r.cn 鲈鱼是什么鱼sanhestory.com 螃蟹不能和什么水果一起吃hcv9jop4ns5r.cn 属猴配什么属相最好hcv8jop4ns0r.cn 看乳腺应该挂什么科hcv9jop2ns9r.cn
什么时候征兵hcv9jop3ns5r.cn 白细胞高是什么原因hcv9jop8ns2r.cn 日常是什么意思hcv7jop6ns2r.cn 梅子是什么hcv9jop8ns3r.cn 急性肠胃炎用什么药hcv8jop5ns7r.cn
天蝎座属于什么象星座hcv8jop6ns7r.cn 吃什么东西补血最快最有效hcv9jop6ns3r.cn 低压高是什么原因hcv8jop2ns2r.cn 肝风是什么意思hcv8jop9ns1r.cn 喜悦之情溢于言表什么意思hcv8jop8ns2r.cn
百度