java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程

线上的一个日志实时输出的程序曾经出过这样一个问题,刚开始上线java程序占用的CPU的资源很少,但是到了整点的时候,CPU直线飙高,直接到达100%根本没有要下降的趋势,唯一的方法只能杀掉它了,后面在借助jstack与top排查到线程然后定位到某行代码出的问题。

排查演示

使用jps找到程序的pid

[root@logs bin]# ./jps -l -m | grep logdir2

22169 galaxy-log-online-0.1-SNAPSHOT-all.jar 3002 /logdir2

找到22169进程ID

找到CPU过高的线程

top -H -p 22169

top - 19:03:22 up 156 days, 5:57, 4 users, load average: 1.00, 2.84, 4.25

Threads: 15 total, 0 running, 15 sleeping, 0 stopped, 0 zombie

%Cpu(s): 99.4 us, 12.6 sy, 0.0 ni, 62.6 id, 4.8 wa, 0.0 hi, 2.6 si, 0.0 st

KiB Mem : 8010456 total, 206760 free, 1079668 used, 6724028 buff/cache

KiB Swap: 0 total, 0 free, 0 used. 6561460 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

22184 root 20 0 4543356 74148 12960 S 80.0 40.9 0:19.96 java

22169 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.00 java

22170 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.35 java

22171 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.08 java

22172 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.09 java

...

将线程转为16进制

[root@logs bin]# printf "%x" 22184

56a8

使用jstack定位到线程

[root@logs bin]# ./jstack 22169 | grep 56a8

"Thread-1" #9 prio=5 os_prio=0 tid=0x00007fe428230800 nid=0x56a8 waiting on condition [0x00007fe4121a5000]

使用3D肉眼来查看线程运行的代码了

"Thread-1" #9 prio=5 os_prio=0 tid=0x00007fe428230800 nid=0x56a8 waiting on condition [0x00007fe4121a5000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at java.lang.Thread.sleep(Unknown Source)

at java.util.concurrent.TimeUnit.sleep(Unknown Source)

at com.dounine.tool.http.sql.LogsRequest$4.run(LogsRequest.java:152)

at java.lang.Thread.run(Unknown Source)

然后开始从LogsRequest.java152行开始找起,发现里面有一个死循环...

FIX 它

然后开开心心下班

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Web 发布规则中使用证书进行 SSL 身份验证

概要 本文介绍如何设置 Internet Security and Acceleration (ISA) Server 2000 来发布需要客户端使用证书进行身份验证的 Web 站点。对于使用基于证书的身份验证作为建立安全套接字层连接的唯一方法的 Web 站点,这是必需的。在 ISA Server 的 Web 发布规则中指定证…

java代码情书_程序员们的爱情表白书

下面看看我们程序员是如何用自己的语言说出爱你。就算闷呆,也要闷呆得很性感。java程序员的情书我能抽象出整个世界...但是我不能抽象出你...因为你在我心中是那么的具体.&#xff0…

motorola 企业移动解决方案

(一)moto数据采集解决方案 数据采集和查询,可随时随地记录并传输各种形式的数据 安全便捷接入企业数据库,实现数据前后台无缝整合 终端小巧,方便携带;快速、低成本的实现高效移动远程管理 (二&a…

使用乱序标签来控制HTML的输出效果

在HTML的元素中,有一个比较特殊的元素form。我们用它来收集表单数据并提交给服务器,并且理论上说来它是没有任何的UI被呈现的。当然如果我们在body元素后紧跟一个form,这样一来似乎看不出来有什么UI呈现的问题,可是当form存在于别…

百度地图离线sdk java_百度地图SDK java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK...

错误信息java.lang.UnsatisfiedLinkError: Couldn‘t load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.baidudemo-1.apk"],nativeLibraryDirectories[/data/app-lib/com.example.baidudemo-1, …

杭电2019多校第一场,Problem I,String 2019

题目描述 Tom has a string containing only lowercase letters. He wants to choose a subsequence of the string whose length is k and lexicographical order is the smallest. Its simple and he solved it with ease.But Jerry, who likes to play with Tom, tells him …

2024年最新Python爬虫入门『最强教程』新鲜出炉!

近年来,大数据成为业界与学术界最火热的话题之一,数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。 爬虫能干什么呢?一…

如何使编译的EXE程序能多个运行?

如何使编译的EXE程序能多个运行?方法很简单,把这句话加到EXE对应的INI文件中去allowmultipleinstancesTrue不错吧!:)转载于:https://www.cnblogs.com/Qia_sky/archive/2005/05/18/158119.html

java实现多对多关系的方法_Hibernate一对多关联双向关联代码实现分享

1、创建实体类(Customer.java、Orders.java)package wck.stu.vo.oneToMany_single;import java.util.HashSet;import java.util.Set;public class Customer {private String id "";private String cName "";private String bank "";private S…

使用LUA构建页面

Android,LUA,CoronaCard 使用CoronaCard引擎构建页面,只需要嵌入CoronaView,就可以构建灵活多样的页面。 微游手柄游戏厅 4.0版本,全面改版,使用LUA语言,通过CoronaCard引擎构建。 一 界面效果&…

C#实现Singleton (转载)

您要在 C# 中构建应用程序。您需要只有一个实例的类,并且需要提供一个用于访问实例的全局访问点。您希望确保您的解决方案高效,并且能够利用 Microsoft? .NET 公共语言运行库功能。您可能还希望确保解决方案是线程安全的。 实现策略 尽管 Singleton 是一…

java当中显示紫色_在java中将深色变为亮色

我正在开发一个程序,我从图像的一部分中获取RGB值.我想去除颜色中的黑暗并使其变亮.我所做的是使用Color.RGBtoHSB然后获取亮度通道并将其设置为范围内的最高值,然后将HSB转换回RGB.但是,当我这样做时,颜色会完全改变.这是一个深红色的例子,它变成紫色,我用这个代码.System.out…

iTunes Connect上传APP屏幕快照图片失败 - 您必须上传有效的屏幕快照。

您必须上传有效的屏幕快照。 原因很简单:这个屏幕快照 要用 iPhone截屏才可以,你自已随便在电脑上截个图肯定不行 //------------------------------------------------------------------------------------------------------------------------------…

JQuery VS JS DOM

JQ断断续续的也用了一阵子了.对我来说确实是个小小的突破。之前的javascript 简直是 一塌糊涂。。糊涂到 连:document.getElementById("") 这个语句都不会写。哈哈这也算是选择JQ的一个理由吧,因为JQ 只需要$("#ID") $(".Class") 就可…

java设计模式组合模式详解_《JAVA设计模式》之组合模式(Composite)

在阎宏博士的《JAVA与模式》一书中开头是这样描述合成(Composite)模式的:html合成模式属于对象的结构模式,有时又叫作“部分——总体”模式。合成模式将对象组织到树结构中,能够用来描述总体与部分的关系。合成模式可使客户端将单纯元素与复合…

匹配嵌套的构造(较复杂)

如果还不明白正则表达式中(?:)的使用,请看:http://www.knowsky.com/297.html正则表达式的终极能力 - 递归 今天在QQ问liuzhi如何写一个匹配递归式的正则表达式时,没想到那家伙居然就回答“递归消除”,让我去看编译原理的书。&am…

XAF Excel数据导入模块使用说明与源码

我实现了XAF项目中Excel数据的导入,使用Devexpress 新出的spreadsheet控件,可能也不新了吧:D 好,先看一下效果图:下图是Web版本的。 下面是win版: 功能说明: 支持从Excel任意版本导入数据,可以使…

ASP注入漏洞基础教程(二)

进 阶 篇 在入门篇,我们学会了SQL注入的判断方法,但真正要拿到网站的保密内容,是远远不够的。接下来,我们就继续学习如何从数据库中获取想要获得的内容,首先,我们先看看&…

java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型

fmt:formatDate 的输出格式 fmt关于时间格式的输出2004-5-31 23:59:592004-4-123:59:59JSTL标签fmt:formatDate引起的中文乱码问题解决方案解决方法:在后面写上一句:**************************************************Field[] fieldsIssue.class.getDe…