性能问题定位记录-1 📅 发布时间:2026/7/15 21:24:46 👁️ 浏览次数: 背景性能压测时部分docker cpu达到100%了测试要求解决。定位思路cpu使用率有差异本人认知内有2种情况1、负载不均衡2、机器性能本身有差异机器性能差异排查可以通过GC日志快速判断。如果回收相同的内存使用的时间差异不大那基本硬件规格是没问题的。详细可以参考之前的文章https://blog.csdn.net/shuxiaohua/article/details/147285269。[2026-03-07T07:25:08.8160000][info][gc]GC(925)PauseYoung(Normal)(G1 Evacuation Pause)761M-266M(3072M)6.012ms[2026-03-07T07:25:08.8160000][info][gc,cpu]GC(925)User0.02s Sys0.00s Real0.01s[2026-03-07T07:25:09.8110000][info][gc,start]GC(926)PauseYoung(Normal)(G1 Evacuation Pause)[2026-03-07T07:25:09.8120000][info][gc,task]GC(926)Using4workers of4forevacuation[2026-03-07T07:25:09.8160000][info][gc,phases]GC(926)Pre Evacuate Collection Set:0.35ms[2026-03-07T07:25:09.8160000][info][gc,phases]GC(926)Merge Heap Roots:0.13ms[2026-03-07T07:25:09.8160000][info][gc,phases]GC(926)Evacuate Collection Set:3.04ms[2026-03-07T07:25:09.8160000][info][gc,phases]GC(926)Post Evacuate Collection Set:1.11ms[2026-03-07T07:25:09.8160000][info][gc,phases]GC(926)Other:0.09ms[2026-03-07T07:25:09.8160000][info][gc,heap]GC(926)Eden regions:124-0(124)[2026-03-07T07:25:09.8160000][info][gc,heap]GC(926)Survivor regions:1-1(16)[2026-03-07T07:25:09.8160000][info][gc,heap]GC(926)Old regions:62-62[2026-03-07T07:25:09.8160000][info][gc,heap]GC(926)Humongous regions:4-4[2026-03-07T07:25:09.8160000][info][gc,metaspace]GC(926)Metaspace:226560K(229184K)-226560K(229184K)NonClass:200613K(201728K)-200613K(201728K)Class:25947K(27456K)-25947K(27456K)[2026-03-07T07:24:58.2290000][info][gc]GC(354)PauseYoung(Normal)(G1 Evacuation Pause)762M-266M(3072M)6.089ms[2026-03-07T07:24:58.2290000][info][gc,cpu]GC(354)User0.02s Sys0.00s Real0.01s[2026-03-07T07:25:00.9640000][info][gc,start]GC(355)PauseYoung(Normal)(G1 Evacuation Pause)[2026-03-07T07:25:00.9640000][info][gc,task]GC(355)Using4workers of4forevacuation[2026-03-07T07:25:00.9700000][info][gc,phases]GC(355)Pre Evacuate Collection Set:0.34ms[2026-03-07T07:25:00.9700000][info][gc,phases]GC(355)Merge Heap Roots:0.14ms[2026-03-07T07:25:00.9700000][info][gc,phases]GC(355)Evacuate Collection Set:4.39ms[2026-03-07T07:25:00.9700000][info][gc,phases]GC(355)Post Evacuate Collection Set:1.16ms[2026-03-07T07:25:00.9700000][info][gc,phases]GC(355)Other:0.09ms[2026-03-07T07:25:00.9700000][info][gc,heap]GC(355)Eden regions:124-0(124)[2026-03-07T07:25:00.9700000][info][gc,heap]GC(355)Survivor regions:1-1(16)[2026-03-07T07:25:00.9700000][info][gc,heap]GC(355)Old regions:61-61[2026-03-07T07:25:00.9700000][info][gc,heap]GC(355)Humongous regions:6-6[2026-03-07T07:25:00.9700000][info][gc,metaspace]GC(355)Metaspace:226151K(228736K)-226151K(228736K)NonClass:200227K(201344K)-200227K(201344K)Class:25924K(27392K)-25924K(27392K)通过对比两台机器的GC日志发现gc性能基本一致因此排除该问题。负载均衡排查一般负载均衡都是用的轮训机制所以就算有机器CPU高也不可能一直高。从监控来看个人猜测是后台定时任务处理负载不均衡。比如有处理MQS消息但是因为分片设置的比较少只有部分服务承担消费任务。通过top -H -p 进程号 发现top线程是都tomcat的http-nio-xx。因此可以排除上述猜测。这里忘记截图了所以没放图通过监控发现cpu高的输入流量也高同时top命令也显示CPU高单个线程的cpu使用率也高同时正在执行请求的tomcat线程也多几个。从以上信息来看应该负载均衡策略有问题。查看ALB是否有启用Sticky Sessions同一个会话的请求都打到一台机器上。发现确实如此关闭开开关后cpu回到正常。圈红的时间点是关闭了开关后的效果。后记此问题是帮隔壁项目组定位的定位该问题并未花很长时间。上述过程有点轻描淡写实际上是需要很多经验做支撑的。我一开始并未怀疑是负载均衡问题而是直接排查机器规格是否有差异。一是因为之前生产出过该问题。另外该系统生产环境使用的是spring cloud gateway做得负载均衡。spring cloud gateway默认的负载均衡策略是轮训按说不应该某台机器cpu一直高。因此排除机器差异后就着手确认负载均衡问题。首先通过监控中的输入流量确信确实负载不均衡。然后找了2台差异较大的docker进去通过top命令发现cpu高的docker单线程cpu30%一直比低(11%)的高。该现象很像是计算量高的请求一直路由到同一台机器。因此我使用jstack打印的线程通过线程栈确认瞬时处理的接口证实上述猜测。下图中圈红的是计算量明显大的接口该机器cpu也是明显比另外一台高。以上现象以我个人经验判断是性能环境没有使用spring cloud gateway作为负载均衡而是使用了集团的ALB做负载均衡而且还开启了Sticky Sessions以前集团让所有产品排查过该用户要求大家关闭该开关因为会导致负载不均衡。不仅如此猜测压测脚本同一个接口使用的是同一个账号进行压测的。以上猜测都一一被证实。
降重不降质,去AI不留痕:百考通让原创表达真正被系统识别 论文写到最后一公里,却在查重和AI检测上栽了跟头?重复率偏高、AI概率爆表,明明是自己一字一句敲出来的,怎么就被系统“误判”成抄的、甚至是AI代写的?别急,这真不是你的问题——而是现在的审核机制太“敏感… 2026/7/13 13:42:39
科技越发达,内心的平静反而越珍贵 上周,朋友小陈半夜给我发消息:“又失眠了,刷到GPT-5要出来的消息,慌得一批。” 我说:“你不是去年就焦虑过了吗?” 他回:“去年是怕被AI取代,今年是怕追不上AI的速度。” 我笑了。… 2026/7/11 15:46:06
Pi0大模型快速上手:Chrome访问http://localhost:7860完整操作指南 Pi0大模型快速上手:Chrome访问http://localhost:7860完整操作指南 想体验用自然语言指挥机器人吗?今天,我们就来快速上手一个名为Pi0的视觉-语言-动作流模型。它就像一个机器人的“大脑”,能看懂摄像头画面,理解你的文… 2026/7/15 13:20:29
N皇后遗传算法Python实现:从Matlab迁移的工程化实践 1. 项目概述:从Matlab到Python的N皇后遗传算法实战迁移你有没有试过把一个在Matlab里跑得挺稳的优化算法,硬生生“翻译”成Python,结果发现收敛慢了三倍、种群早熟得像泡面、连调试信息都报错在第7行?我去年就踩过这个坑——当时手… 2026/7/15 21:23:23
告别环境折腾!Claude Code Windows从0到1保姆级教程 前言 AI代码工具更新快,很多教程要么太碎片化,要么忽略了国内环境下的配置细节。最近尝试部署Claude Code时,就踩了不少接口调用和模型切换的坑。 这篇文章把完整流程整理出来,从Node.js环境搭建到API接口配置,再到多… 2026/7/15 21:23:23
自动驾驶横向控制算法——从几何模型到工程实践:Pure Pursuit的优化与挑战 1. Pure Pursuit算法核心思想解析Pure Pursuit算法的核心思想源自人类驾驶员的行为模式。想象一下你开车时的场景:眼睛会自然看向前方某个目标点,双手控制方向盘使车辆朝着该点行驶。这种"看远控近"的驾驶策略,正是Pure Pursuit算法… 2026/7/15 21:21:21
Docker与Kubernetes企业级实战:Linux运维向云原生转型指南 这次我们来看一套专门为Linux运维工程师设计的云原生技术教程,重点覆盖Docker和Kubernetes(K8s)在企业环境中的实际应用。这套教程不仅包含完整的知识点讲解,还附带了实战课件,适合有一定Linux基础但希望向云原生方向进… 2026/7/15 21:21:21
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲 线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲 作者 : 乖乖数学讲次 : 第80讲 主题 : 线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转… 2026/7/15 21:19:20
技术团队如何平衡AI工具与深度技术交流:从Claude依赖到高效协作 在实际技术团队协作中,当开发者遇到复杂问题时,"去问Claude"或"让LLM解决"正在成为一种新的回避深度技术讨论的方式。这种现象背后反映的不仅是工具依赖问题,更是团队技术深度交流机制的缺失。真正高效的技术团队需要建立… 2026/7/15 21:19:20
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41