jvm相关

简介: 本节介绍Arthas常用命令:实时监控系统数据(dashboard)、查看JVM线程、内存、系统属性(sysprop)、环境变量(sysenv)、性能计数器(perfcounter)、日志配置(logger)及静态属性(getstatic)等,支持动态修改与诊断,助力Java应用排查问题。

dashboard—当前系统的实时数据面板
第二章节已说,这里不再赘述

  1. thread—查看当前 JVM 的线程堆栈信息
    第二章节已说,这里不再赘述
  2. jvm—查看当前 JVM 的信息
  3. sysprop—查看和修改JVM的系统属性
    4.1 查看全部
    4.2 查看指定属性
    4.3 修改单个属性
  4. sysenv—查看JVM的环境变量
    5.1 查看全部环境变量
    5.2 查看指定环境变量
  5. vmoption—查看和修改JVM里诊断相关的option
    6.1 查看全部option
    6.2 查看指定option
    6.3 更新指定option
  6. perfcounter—查看当前 JVM 的Perf Counter信息使用参考
    可以用-d参数打印更多信息:
    jdk9以上的应用
    如果没有打印出信息,应用在启动时,加下面的参数:
  7. logger—查看和修改logger
    8.1 查看所有logger信息
    从appenders的信息里,可以看到
    CONSOLE logger的target是System.out
    APPLICATION logger是RollingFileAppender,它的file是app.log
    ASYNC它的appenderRef是APPLICATION,即异步输出到文件里
    8.2 查看指定logger
    8.3 查看指定classloader的logger
    其中,classloader为上述8.1或8.2中返回的
    8.4 更新全局logger level
    8.5 更新指定classloader logger level
    默认情况下,logger命令会在SystemClassloader下执行,如果应用是传统的war应用,或者spring boot fat jar启动的应用,那么需要指定classloader。
    可以先用 sc -d yourClassName 来查看具体的 classloader hashcode,然后在更新level时指定classloader:
    8.6 查看没有appender的logger
    默认情况下,logger命令只打印有appender的logger的信息。如果想查看没有appender的logger的信息,可以加上参数--include-no-appender。
    注意,通常输出结果会很长
    Java
    运行代码
    复制代码
    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
    40
    41
    42
    43
    [arthas@2062]$ logger --include-no-appender
    name ROOT
    class ch.qos.logback.classic.Logger
    classLoader sun.misc.Launcher$AppClassLoader@2a139a55
    classLoaderHash 2a139a55
    level DEBUG
    effectiveLevel DEBUG
    additivity true
    codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    appenders name CONSOLE

                                     class           ch.qos.logback.core.ConsoleAppender
                                     classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                     classLoaderHash 2a139a55
                                     target          System.out
                                     name            APPLICATION
                                     class           ch.qos.logback.core.rolling.RollingFileAppender
                                     classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                     classLoaderHash 2a139a55
                                     file            app.log
                                     name            ASYNC
                                     class           ch.qos.logback.classic.AsyncAppender
                                     classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                     classLoaderHash 2a139a55
                                     appenderRef     [APPLICATION]
    

    name com
    class ch.qos.logback.classic.Logger
    classLoader sun.misc.Launcher$AppClassLoader@2a139a55
    classLoaderHash 2a139a55
    level null
    effectiveLevel DEBUG
    additivity true
    codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

    name com.alibaba
    class ch.qos.logback.classic.Logger
    classLoader sun.misc.Launcher$AppClassLoader@2a139a55
    classLoaderHash 2a139a55
    level null
    effectiveLevel DEBUG
    additivity true
    codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    ...

  8. getstatic—查看类的静态属性
    有需再更
  9. ognl—执行ognl表达式
    有需再更
  10. mbean—查看 Mbean 的信息
    有需再更
  11. heapdump—dump java heap, 类似jmap命令的heap dump功能
相关文章
|
1天前
|
jenkins 持续交付 调度
项目《神领物流》
本项目为自研物流系统,基于微服务架构实现智能调度与管控,涵盖用户、快递员、司机多端应用。采用GitFlow管理代码,通过Jenkins实现持续集成,提交后自动构建,保障开发效率与系统稳定,类似顺丰速运模式,面向C端提供高效快递服务。(239字)
|
1天前
|
缓存 数据建模 文件存储
EFC&CTO:缓存引发数据不一致问题排查与深度解析
EFC是NAS自研分布式文件系统客户端,近期升级支持多客户端分布式缓存,兼容NAS、CPFS、OSS。因未适配CTO测试,发版时出现data mismatch。排查发现非单纯缓存读旧数据问题,通过NFS挂载验证确认文件系统数据被破坏,挑战超出预期。
|
1天前
|
设计模式 Java 程序员
推荐书籍
推荐多本Java经典书籍:《Head First Java》适合入门,《Java核心技术》深入巩固基础,《Java编程思想》整合设计模式,适合进阶。并发方面有《Java并发编程之美》等,JVM推荐《深入理解Java虚拟机》与《实战JVM》。体系全面,适合不同阶段学习。
|
1天前
|
消息中间件 存储 缓存
MQ篇
本项目采用RabbitMQ、Kafka和EMQ实现异步通信与数据采集。RabbitMQ用于服务解耦、流量削峰,支持多种消息模式与高可用集群;Kafka处理高吞吐用户行为数据,保障实时推荐与数据同步;EMQ基于MQTT协议实现物联网设备与服务器间可靠通信,支持QoS分级与延迟发布,确保消息不丢不重。三者协同提升系统性能与稳定性。
|
1天前
|
负载均衡 算法 Java
微服务篇
SpringBoot核心原理是自动装配,通过@SpringBootApplication注解实现配置类、组件扫描与自动配置。其启动流程包括环境初始化、上下文创建与自动化配置。常用起步依赖如web、redis等;支持properties、YAML等配置文件,后加载的覆盖先加载的。项目通过Feign、Ribbon实现服务通信与负载均衡,使用Nacos做注册与配置中心,Sentinel或Hystrix实现限流熔断,Gateway实现网关限流与CORS跨域控制,结合Spring Cloud五大组件构建微服务架构。
|
1天前
|
Ubuntu Java Linux
Docker
本文介绍Docker基础操作,涵盖镜像打包、容器管理及Dockerfile编写。通过示例演示如何基于Ubuntu镜像构建Java运行环境,打包Spring Boot应用(linuxDemo.jar),并实现容器化部署与端口映射,最终验证服务运行状态,适合初学者快速掌握Docker核心技能。(239字)
|
1天前
|
人工智能 NoSQL Java
幂等方案专题
xxx智能教育辅导平台基于Spring Cloud Alibaba构建,融合大模型与知识图谱技术,实现学情诊断、自适应学习与智能批改。通过通义千问Max分析作业数据,精准定位知识盲区;结合Neo4j构建学科能力网络,动态推荐个性化学习路径;集成OCR与语义理解实现作文智能批改,准确率超98%。支持高并发访问,日均处理50万+作业请求,提升教学效率与学习体验。
|
1天前
|
fastjson Java Kotlin
FastJson:大面积故障规避案例
不到两年开发中,已三次踩坑FastJson,版本差异大,使用需谨慎。项目为Kotlin/Java/Groovy混编:Java生态完善;Kotlin语法简洁、支持协程,但工具链兼容差;Groovy用得少,依赖模型辅助。曾因反序列化异常致预发大量报错,排查发现为FastJson隐患所致,影响广泛,令人后怕。
|
1天前
|
存储 缓存 NoSQL
Redis篇
本项目中Redis广泛应用于缓存、数据存储与分布式锁。用于缓存热点数据、用户信息及计算结果,提升系统性能;通过哨兵集群实现高可用,结合LFU策略保障热点数据留存;利用布隆过滤器、空值缓存等应对缓存穿透,配合MQ与TCC保证Redis与MySQL数据一致性,并在任务调度中实现分布式锁避免重复执行。
|
1天前
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
事故源于大KEY在业务高峰时占满带宽,导致Redis内存使用率骤升至100%。虽有淘汰策略,但缓冲区(输入/输出)激增吞噬内存,主线程阻塞,命令无法处理,最终引发GET/SET超时崩溃。根本原因为大KEY与高流量叠加,触发缓冲区溢出,超出实例承载极限。