Linux HotSopt虚拟机GC线程的CPU占用率

死亡笔记Deathnote1全记录 死亡笔记靶场全记录 阅读详情

下面的问题将会检验你有关Linux系统上的Java程序的垃圾回收和High CPU排错的知识。在过度调用GC或及CPU占用率过高的时候,这种排错技术是至关重要的。假设你没有使用像是Compuware dynaTrace或者JVisualVMware这样先进的监视工具。有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则。

问题:

在Linux系统运行的时候,怎样可以监视并计算每一个Oracle HotSpot或者JRockit JVM垃圾回收(GC)线程占用了多少CPU资源呢?

答案

在Linux系统上,Java线程是作为本地的线程来实现的,这就导致每一个线程都是一个单独的Linux进程。这就意味着,你要使用top-H命令(线程开关视图)来监视HotSpot JVM产生的所有Java进程的CPU占用率。

也就是说,根据你正在使用的GC策略和服务器规范的不同,HotSpot和JRockit JVM会为每一个GC线程分配一个确定的序号来区分收集空间的新旧。通过产生的JVM线程库,这些线程可以很轻松地被识别。你可以参考下面这个范例,Oracle JRockit JVM用“(GC Worker Thread X)”的标记方式产生了四个线程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
===== FULL THREAD DUMP ===============
 
Fri Nov 16 19:58:36 2012
 
BEA JRockit(R) R27.5.0-110-94909-1.5.0_14-20080204-1558-linux-ia32
 
"Main Thread" id=1 idx=0x4 tid=14911 prio=5 alive, innative, waiting
 
-- Waiting fornotification on: weblogic/t3/srvr/T3Srvr@0xfd0a4b0[fat lock]
 
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
 
at java/lang/Object.wait(J)V(Native Method)
 
at java/lang/Object.wait(Object.java:474)
 
at weblogic/t3/srvr/T3Srvr.waitForDeath(T3Srvr.java:730)
 
^-- Lock released whilewaiting: weblogic/t3/srvr/T3Srvr@0xfd0a4b0[fat lock]
at weblogic/t3/srvr/T3Srvr.run(T3Srvr.java:380)
at weblogic/Server.main(Server.java:67)
 
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
 
-- end of trace
 
"(Signal Handler)" id=2 idx=0x8 tid=14920 prio=5 alive, innative, daemon
 
"(GC Main Thread)" id=3 idx=0xc tid=14921 prio=5 alive, innative, native_waiting, daemon
 
"(GC Worker Thread 1)" id=? idx=0x10 tid=14922 prio=5 alive, innative, daemon
 
"(GC Worker Thread 2)" id=? idx=0x14 tid=14923 prio=5 alive, innative, daemon
 
"(GC Worker Thread 3)" id=? idx=0x18 tid=14924 prio=5 alive, innative, daemon
 
"(GC Worker Thread 4)" id=? idx=0x1c tid=14925 prio=5 alive, innative, daemon
 
………………………

现在让我们通过这个简单的例子来了解一下这些规则。

第一步——监视GC线程的CPU利用率

第一步是监视和测定:

  • 通过Linux系统的top-hcommand命令的显示结果,来找出每一个GC工作线程的本地线程ID。
  • 确定每一个GC工作线程的CPU占用率。

第二步——生成并分析JVM线程池

使用Linux的top -H命令的同时,通过kill -3 命令生成2或3个JVM Thread Dump。

  • 打开JVM线程池,找到JVM GC工作线程。
  • 然后,通过本地线程的ID(tid属性)找出“top -H”输出的数据和JVM Thread Dump中的数据的关系。

就像你在这个例子中看到的那样,通过这样的线程分析,我们可以发现GC工作线程总共占用了大约20%的CPU资源。这主要是因为在那个时候发生了major GC。请注意使用verbose:gc参数是非常有用的,因为它可以让你分析CPU使用峰值与minor GC以及major GC的关系,以及让你确定JVM GC进程占用了多少CPU资源。

机器学习之性能度量 废话不说,本文分为两个部分: 第一部分,我对周志华教授《机器学习》这本书中性能度量知识点中疑难点的学习感悟;第二部分,我感觉该书2.3节 性能度量 中最后部分的代价曲线表述有误,苦于没找到联系教授的正确方式,故希望与广大网友一起探讨。 阅读详情

相关推荐

SPI模式下的SD卡读写,为什么你的数据总出错?详解时序与状态机避坑指南

本文深入探讨SPI模式下SD卡读写数据出错的根本原因,提供时序优化与状态机设计的实战指南。针对时钟周期计数、状态机跳转和忙检测等核心问题,详解命令时序细节、状态机同步策略及高级避坑技巧,帮助开发者提升SD卡在SPI模式下的稳定性和性能。

weixin_30514745的博客 261

hadoop前奏之虚拟机的网络配置

虚拟机安装,没有多少可说的,主要是一个网络配置。 注意:确定windows系统的nat服务开启。 计算机->管理->服务和应用程序->服务->VM NAT,VM DHCP 否则,会死的很惨。 1:hostname 界面时配置hostname,如: 安装完成后,通过命令 linux命令: 查看hostname:hostname 查看hostname:cat /etc/sysconfi

deathDargon的博客 1004

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 528

虚拟机配置

【代码】虚拟机配置。

death_of_ye的博客 519

BeckHoff <--> ABB 机器手 Profinet 通讯

本文介绍了BeckHoff PLC与ABB机器人通过PROFINET通信的实现方案。主要内容包括:1)通信接口的详细变量定义,涵盖输入/输出信号、设备状态监控、夹爪控制等关键功能位;2)全局数据结构和变量配置说明;3)机器人任务控制程序的实现方法,包括参数校验、任务指令下发和状态监控机制;4)重点分析了任务调度功能块的代码逻辑,涉及慢速模式处理、多参数配置和执行状态判断。该方案通过结构化变量定义和模块化程序设计,实现了PLC对机器人作业的精确控制,为工业自动化系统集成提供了可靠通信范例。

工控智联驿站 1032

微信小程序 - 接入腾讯地图 SDK 及详细使用教程,结合小程序 mpa 地图组件展示腾讯地图(基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化)

微信小程序使用腾讯地图完整流程,微信小程序 接入腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序引入腾讯地图API方法,腾讯地图小程序SDK,微信小程序实现使用腾讯地图SDK步骤详细介绍,微信小程序接入腾讯地图(线路规划、逆解析)、高德地图,微信小程序之使用腾讯地图,微信小程序 接入第三方地图,小程序服务器配置地图,微信小程序接入腾讯地图,微信小程序插入腾讯地图教程,微信小程序如何调用腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序腾讯地图SDK使用方法,在微信小程序上创建一个简单的腾讯地图,微信小

✅ 精选推荐文章 1万+

VulnHub日记(十二):Deathnote:1

靶机介绍 虚拟机链接:Deathnote: 1 ~ VulnHub 参考博客:Deathnote - Writeup - Vulnhub - Walkthrough - Security 开始练习 本机ip:192.168.56.102 目的机ip:192.168.56.127 使用netdiscover发现主机ip netdiscover -r 192.168.56.0/24 nmap扫描开放服务 nmap -A 192.168.56.127 访问80口,写入host文..

Dawn_Xi的博客 816

【ArcGIS风暴】Win10操作系统ArcGIS许可License无法启动的解决方法汇总(绝对成功!)

文章目录1. 关闭Windows Defender2. 关闭系统防火墙3. 删除迈克菲(McAfee)杀毒软件4. 在系统服务中启动 在安装ArcGIS软件时,最重要的一步是许可服务的正常启动,通常,由于各种各样的原因,ArcGIS许可管理器License Manager十有八九会无法启动,点N多次都没反应,如果许可服务不能如愿启动的话,即使Desktop安装成功,也是无法打开的。本文汇总了Win10操作系统之上ArcGIS安装过程中可能会导致服务无法启动的原因及解决办法。 ArcGIS安装参考教程:

智慧空间实验室 2万+

Linux查看HotSopt虚拟机GC线程的CPU占用率

下面的问题将会检验你有关Linux系统上的Java程序的垃圾回收和High CPU排错的知识。在过度调用GC或及CPU占用率过高的时候,这种排错技术是至关重要的。假设你没有使用像是Compuware dynaTrace或者JVisualVMware这样先进的监视工具。有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则。 问题: 在Linux系统运行的时候,怎样可以

Java我人生的技术博客 4820

web逆向伪瑞数案例:宝武资源有限公司(面向对象补环境)

声明:该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关前言:之所以称伪瑞数案例,是因为该网站,无论是补环境的方法、还是环境都和瑞数差不多,因为第一次遇到这种网站,不确定是不是瑞数的一种,所以这里称伪瑞数,有知道的道友,可以评论区评论下,共同进步。,这里就不做多介绍了1.瑞数中的是t​s,而该网站是_ss。2.外链js代码不能格式化,否则补环境时会遇到一个超过数组长度的报错。3.call执行后的虚拟文件中有超多的debugger。

老衲爱洗头的博客 2534

matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决

matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 目录 matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 #使用plt.savefig("cm.png",dpi = 300)为什么不管用 #plt.rcParams也不管用 #解决方案 在做论文的过程中,许多期刊或者会议对图片的分辨率有明确的要求,例如,dpi=300。 之前画曲线图都是采取保存方式为savefig(dpi=300),然后查看保存图片的属性信息,然而你看到的现象是

data+scenario+science+insight 8799

靶机14 DEATHNOTE: 1

不要浪费太多时间跳出框框思考。这是一个直截了当的盒子

honest_gg的博客 1478

交换机四种光互联技术:OIO、OBO、NPO与CPO

在过去几十年里,数据中心交换机主要依赖电信号通过铜线进行数据传输。然而,随着数据传输速率从100Gbps向400Gbps、800Gbps甚至1.6Tbps迈进,传统电互联(Electrical Input & Output, EIO)面临三大瓶颈:信号衰减、功耗激增和空间限制。例如,高速信号在长距离铜线传输中会产生严重的信号失真,迫使设计者加入数字信号处理器(DSP)来补偿信号衰减,这进一步推高了功耗和成本。此外,传统可插拔光模块的体积较大,限制了端口密度,难以满足现代数据中心对高带宽密度的需求。

网络技术联盟站 3130

deathnote1靶机超详细新手笔记

Kali linux_百度百科 (baidu.com)](https://baike.baidu.com/item/Kali linux/8305689)

m0_65938147的博客 1857

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

虚拟机安装华为模拟器eNSP过程中所遇问题与解决办法

安装eNSP启动设备卡死问题

edsion4的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Linux上的HotSpot GC线程CPU占用空间

以下问题将测试您对Linux操作系统上运行的Java应用程序的垃圾回收和高CPU故障排除的知识。 当调查过多的GC和/或CPU利用率时,此故障排除技术尤其重要。 它将假定您没有访问高级监视工具的能力,例如Compuware dynaTrace甚至JVisualVM。 将来会介绍使用此类工具的未来教程,但请确保您首先掌握基本的故障排除原理。 题: 在Linux OS上,如何在运行时监视...

最佳 Java 编程 407

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Weblogic被管server启动出错:Unable to receive self generated multicast messages

1 环境信息: WebLogic Version:     WebLogic Server 10.3.3.0 Fri Apr 9 00:05:28 PDT 2010 1321401 Java Version:     1.6.0_17 OS Name:     Linux OS Version:     2.6.18-238.el5 2. 启动被管ms1 出错如下:

水滴石穿 5748

Jvm 工具 查看GC信息 定位CPU占用高

jstat(jvm Statistics Monitoring Tool) 命令格式 jstat [options vmid [internal [count] ]] 第一个参数 -class :显示有关类加载器行为的统计信息 -compiler : 显示编译的信息 -gc : 显示每个内存区的内存占用信息 -gcutil :各个内存区在堆中的使用占比 第二个参数 :vmid 如果是本地虚拟机...

qq_40592484的博客 909

weblogic 设置多少个GC线程合适

之前写过一篇Linux下服务器CPU过高的诊断,发现都是在做GC,一个GC线程消耗30%-40%的CPU,一个JVM开启了63个GC线程,消耗了百分之几千的CPU。有很多次CPU飙高的情况可以发现都是GC线程导致,那我们默认的GC线程配置合理吗?    首先,JVM默认GC线程数量是(ncpus    还有跟我们的部署特点有关系,一台PC server 96个逻辑CPU,256G内存,在机器

关注系统性能调优 4873

Hotsopt虚拟机管理对象

对象的创建 在Java中创建对象通常只是一个 new 关键字,当Java虚拟机遇到一条 new 的字节码时首先会去检查这个指令的参数是否能在常量池中定位到一个类的引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化过,如果没有则执行相应的类初始化流程。类加载检查通过后,虚拟机将为新生对象分配内存,对象内存大小在类加载后可完全确定。 指针碰撞:加入堆被划分成两块,一块是空闲的堆,另一块是已使用的堆,对象分配内存只需要将已使用的内存像空暇内存进行扩充,如果两块内存交...

ggrjjs的博客 503

【JVM】jstat查看gc情况

参考:https://blog.youkuaiyun.com/zlzlei/article/details/46471627 jstat命令命令格式: jstat [Options] vmid [interval] [count] 参数说明: Options,选项,我们一般使用 -gcutil 查看gc情况 vmid,VM的进程号,即当前运行的java进程号 interval,间隔时间,单位为秒或者毫秒 count,打印次数,如果缺省则打印无数次 1.登录机器 ssh 10.7.198.2 .

qq_34980601的博客 1041

使用JMX来获取CPU利用率和GC 所占用的CPU利用率

这篇博客会介绍如何通过JMX 来获取JAVA 进程占用的CPU利用率和GC所占用的CPU利用率在使用JVisualVM的时候,发现它可以查看当前JAVA 进程占用的CPU利用率和GC 所占用的CPU利用率,很奇怪它是如何计算的或者怎么获取的. 本文会根据JVisualVM的源码来描述JVisualVM是如何计算的.获取源码GITHUB 地址: https://github.com/visualvm

scugxl的专栏 7974

关于一次Weblogic活动线程的问题处理

Weblogic控制台监控发现 环境>>服务器>>你的服务器>>监控>>线程 中活动执行线程竟然是2000多。同一套系统在另一套平台上,并且访问的人不少,也没有超过100。重启此应用,活动进程依然没有变化,真是奇怪。查看转储线程堆: ==== FULL THREAD DUMP=============...

weixin_34389926的博客 1125
上一篇: Web基础架构:负载均衡和LVS
下一篇: 数据库连接池浅析
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值