美文网首页
Java-生产环境占用CPU高一次问题分析记录

Java-生产环境占用CPU高一次问题分析记录

作者: 小志码字 | 来源:发表于2017-04-20 15:24 被阅读385次

前言:

最近几次,公司的java服务项目,占用CPU很高,持续不下降,云里雾里,一直不知道是什么原因造成了cpu占用高。此片文章谈谈从发现这个问题到解决这个问题的过程。

我们试着利用lstack打出dump信息,观察是哪个线程占用cpu高。

1.先用top查询某进程的线程CPU占用情况,定位到cpu占用高的进程pid

根据pid定位具体的线程top -p PID -H

2.用jstack -l PID >> 28137.log 将具体的线程导入到文件中

3.在文件中搜索线程id(需要转成16进制小写)

如 上图中的28249 的 16进制为 6e59

在 28137.log 文件中查找 6e59 即可定位到具体的具体的堆栈代码

  查找发现 代码定位于使用的是google guava 下的LinkedHashMultimap导致cpu居高不下

为什么此map导致cpu占用如此高了  就问问了最近运维的情况, 最近运营那边加大了推量,峰值的时候qps 达到了5000  晚上在线的用户达到了10W级别的用户量,而此map存放了用户相关属性的数据,但是在上线的时候 我们专门测试了ConcurrentHashMap 和 LinkedHashMultimap的性能,操作100W数据的时候 基本都是维持在2-3秒内,速度都差不多,是很快的速度,最后也就选择了LinkedHashMultimap,毕竟用起来方便 在存放一对多的情况下。

   但是为什么LinkedHashMultimap 占用cpu高了  试着看了源码,发现LinkedHashMultimap内部的实现很复杂,特别是在做增删改的频繁的情况下,用到了计数器,在存放量大的情况下,删除和增加是个很耗时的工作,那几天我们存放的数据基本都是维持在10W 以上的数据。

   找到了问题根源,我们就将LinkedHashMultimap换成了ConcurrentHashMap,升级到生产环境,发现cpu降下来了 ,此问题也就解决了。当一次记录,避免此问题以后再次发生。

    最后附上我的ConcurrentHashMap和LinkedHashMultimap并发性能测试  

系统环境 windows 64位 8G 内存  双核  (如果不准,请自行测试验证)

后记:如果发现什么问题 ,请留言给我,我是小志码子,我会及时改正,互相学习,共同进步。

相关文章

  • Java-生产环境占用CPU高一次问题分析记录

    前言: 最近几次,公司的java服务项目,占用CPU很高,持续不下降,云里雾里,一直不知道是什么原因造成了cpu占...

  • Java死循环排查及线程状态

    背景 在生产环境偶尔会有cpu突然飙高的时候,需要定位问题,判断逻辑是否有问题 方法 找出占用cpu最大的进程使用...

  • 生产问题相关面试题

    假如生产环境出现cpu占用过高,请谈谈你的分析思路和定位 先用top命令找出cpu占比最高的 ps -ef或者jp...

  • 排查java-CPU使用率高的问题

    记录一次线上排查CPU使用高的问题 使用top命令找到占用CPU高的进程PID 显示线程列表 使用 找到占用CPU...

  • Java Heap Dump 分析步骤

    前言 生产环境中Java应用难免遇到Out Of Memory或内存持续占用过大的问题。对于此类问题通用的分析方法...

  • go tool 分析内存信息

    可以使用go tool分析CPU、内存占用情况时,pprof进行分析相关的cpu占用情况和内存占用情况:可以使用 ...

  • Android CPU占用高问题分析

     最近负责的项目中,有一定制客户频繁的抱怨设备在安装一些客户的app组件后,云端采集到的CPU占用率信息一直维持在...

  • APP 性能优化与分析CPU篇(一)-CPU Profiler

    APP 性能优化与分析CPU篇(一)-CPU Profiler 一、前言 在APP的性能分析中,CPU的占用分析是...

  • 【故障诊断】Mysql数据库CPU占用高

    运维同事监测到生产环境数据库CPU占用过高,业务系统反应卡慢,记录一下排查过程。 最后检查结果:非SQL性能导致的...

  • JVM笔记

    问题1 dump JVM内存 系统cpu占用持续升高如何处理? 方式1:手动分析基础命令 方式二: arthas分析工具

网友评论

      本文标题:Java-生产环境占用CPU高一次问题分析记录

      本文链接:https://www.haomeiwen.com/subject/mellzttx.html