记一次CPU有规律飙高的线上问题排查过程

2024-02-06 18:28

本文主要是介绍记一次CPU有规律飙高的线上问题排查过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景

最近在计费系统模块和灰度发布相关的功能已经基本交付,在这个间隙中,领导说有个线上问题需要排查下,
问题的场景比较有意思,排查过程中也有一些成长,这里记录一下。

二、排查过程

2.1 查看pinpoint 监控

首先根据领导的反馈看pinpoint中的JVM的CPU日志:
image.png
CPU每隔一个小时会有一个突刺,对于平时的表现来看有个波峰。而且通过不同时段的波峰的表现看是相对有规律的,同时波峰的持续时间也是不太固定的,有时候是2-4分钟,有时候是将近10分钟,另外发生波峰的时间点大多在每个小时的前10分钟左右,如下监控显示:
image.png

2.2 排除FGC的影响

因为最近上线该服务的时候我们修改了JVM的启动参数,领导说可以明确没有GC,这里我也看了JVM的启动参数:
image.png
另外就是堆内存和非堆内存的监控也没有明确有GC的影子,所以这里先排除FGC的影响。另外一方面如果出现CPU利用率飙高的情况下之前遇到的都是接近百分之百,目前基本是75%左右。

2.3 查看ELK日志-SQL部分

这里先看一下该服务在处于CPU飙高的时间段内SQL方面的监控日志:
image.png
排查如下日志:

[cn.xxx.dao.xxMapper.selectByxxxIdAndRound]-[debug]:<== Total: 1

这里主要看SQL内容和Total字段返回的条数,但是基本上没有发现问题,可以排除是SQL 方面的原因了。

2.4 查看缓存代码

由于之前做过分布式本地缓存刷新的方案和落地,所以就敏感的去查一下本地缓存方面的代码,因为有个关键点是本地缓存用Guava构建的,同时注释说明是每个小时构建一次,这里我们看一下构建代码:

CacheLoader<String, Map<String, Object>> loader =new CacheLoader<String, Map<String, Object>>() {@Overridepublic Map<String, Object> load(String key) throws Exception {return loadInfo(key);}@Overridepublic ListenableFuture<Map<String, Object>> reload(final String key, Map<String, Object> voiceSiteInfo) {ListenableFutureTask<Map<String, Object>> task =ListenableFutureTask.create(new 

这篇关于记一次CPU有规律飙高的线上问题排查过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/685160

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解