java监控

1.常用linux命令

  • uptime


    image.png
    • 22:22:41 up 3 min 表示服务器运行了3分钟
    • 1 user 表示有一个终端接入
    • load average :0.01 ,0.03 ,0.01 表示平均负载。三个数字分别表示1分钟,5分钟,15分钟内的平均负载(运行队列中的平均进程数表示)值越大,则负载越重。
  • top

    image.png

    第一行同uptime命令,还显示了cup信息,内存,交换空间信息。最下面是进程占用情况。

  • vmstat : 可以统计系统cpu,内存,swap,io等情况


    image.png
    • swpd 交换空间情况
    • free 空余内存
    • bi 输入
    • bo 输出
    • cs cpu上下文切换
    • us 用户占用cpu情况
  • pidstat


    image.png

    使用: pidstat -p 1231 -u 1 3 表示,查看1231进程cpu使用情况,每秒采样一次,一共采样3次


    image.png

    使用:pidstat -p 1231 -u 1 3 -t 显示进程中线程信息
    使用:pidstat -p 1231 1 3 -d -t 查看进程中磁盘io情况

2.jdk中自带的监控工具

  • jps.exe : 类似于linux中ps -ef | grep java 用来表示所有的java进程


    image.png

    使用参数:
    -q 仅输出VM标识符,不包括class name,jar name,arguments in main method

    • -m 输出main 方法的参数
    • -l 输出完全的包名,应用主类名,jar的完全路径名
    • -v 输出jvm参数
    • -V 输出通过flag文件传递到JVM中的参数(.hotspotrc文
      件或-XX:Flags=所指定的文件
  • jinfo :用来查看正在运行的java应用程序的参数,或者在运行时修改参数

    • -flag <name> : 打印指定jvm的参数值
    • -flag [+|-]<name> : 指定jvm参数的布尔值
    • -flag <name>=<name>:设定指定jvm参数的值
  • 使用方式:我们显示新生代对象晋升到老年代对象的最大年龄

    • jinfo -flag MaxTenuringThreshold 10272


      image.png

      显示新生代的对象经过15次垃圾回收后(如果还存活),进入老年代。

    • jinfo -flag PrintGCDetails 10272


      image.png

      显示的是-PrintGCDetails 表示当前不输出GC详细日志
      现在我们修改下状态


      image.png

      现在就是打印GC日志详细信息
  • jmap :生成java应用程序的堆快照和对象的统计信息
    使用:jmap -histo 10272 >d:\s.txt


    image.png

    这样我们就能看到每个class占用内存情况
    除此之外我们还可以使用以下命令dump整个堆信息

    • jmap -dump:format=b,file=d:\heap.hprof 10272
      可以使用MAT工具打开查看hprof文件
  • jstack 用来打印线程信息

    • -l打印锁的信息
    • -m 打印java和native的帧信息
    • -F强制dump,当jstack没有响应的时候使用
      使用:jstack 10272 >>D:\a.txt 输出信息如下


      image.png

      可以查看线程状态,和执行情况

  • jconsole : 可以查看堆、类、线程、cpu,垃圾回收等状态


    image.png
  • Visual VM : 是功能强大,多合一故障诊断和性能监控的可视化工具


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。