分类 Java 相关 下的文章

jdk 自带工具集

  • jps 列出当前用户的java 进程
    jps
    jps -v
    jps -l

  • jcmd 打印 jvm 的基本类, 线程, VM等信息. 查看 GC 参数, JVM系统变量, 参数 flags, VM 参数存活时间,
    做 dump, 打开商业 feature 等. jcmd help;
    jcmd pid help
    jcmd pid GC.heap_dump help
    jcmd pid GC.heap_dump /tmp/heap.hprof
    一般支持如下操作:

    VM.native_memory
    GC.rotate_log
    ManagementAgent.stop
    ManagementAgent.start_local
    ManagementAgent.start
    Thread.print
    GC.class_histogram
    GC.heap_dump
    GC.run_finalization
    GC.run
    VM.uptime
    VM.flags
    VM.system_properties
    VM.command_line
    VM.version

  • jmap 产生 heap dump, 打印 histogram 和永久带统计 permanent generation statistics;

    jmap -histo 23383
    jmap -histo:live 23383
    jmap -permstat 23383 //perm gen statistic
    jmap -dump:live,format=b,file=/tmp/heap.hprof 23383

  • jhat 读取 heap dump 进行分析,启动 web 端口, 供查看;

  • jinfo 查看 JVM 系统属性, 并可以设置某些信息, 参数等

    -flag to print the value of the named VM flag
    -flag [+|-] to enable or disable the named VM flag
    -flag = to set the named VM flag to the given value
    -flags to print VM flags
    -sysprops to print Java system properties

  • jstack 产生 thread dump, 或打印 thread 锁的情况;

    jstack -l 23383 > /tmp/thread.log //long listing. Prints additional information about locks
    jstack 23383
    jstack -F 23383 //force stack dump
    jstack -m 23383 //to print both java and native frames (mixed mode)

  • jstat JVM 监控统计信息, 如 GC, jit编译器, 类等;

    jstat -options //list options
    jstat -gccause 23383 1s 3 //for pid 23383, print gccause 3 times, interval is 1s
    jstat -printcompilation 23383 1s 3
    jstat -gcutil 23383 1s 3

  • jconsole 图形化 JVM 线程, 类, 内存, GC 等情况;

  • jvisualvm 监视 JVM 的图形工具, 抓取和分析 dump;

  • JMC JMissionControl 图形化 JFR analysis

基于 Java 的互联网应用 应该监控那些指标

  • 操作系统层面
  1. cpu 使用率;
  2. 内存使用率;
  3. 磁盘使用情况;
  4. 网络使用情况;
  • JVM 层面
  1. Jvm cpu 使用情况;
  2. gc overhead;
  3. gc count;
  4. gc 每次回收后的使用情况;
  5. jfr 的重要指标;
  6. Jvm memory available;
  7. oom error count;
  • 应用层面
  1. tps/ops;
  2. transaction time;
  3. 5xx count;
  4. 4xx count;
  5. app busy threads;
  6. app total thread count;
  7. error count;

设置 https proxy

问题:

Java 实现:

参看:
https://stackoverflow.com/questions/516323/https-connections-over-proxy-servers
https://wiki.squid-cache.org/Features/SslBump
https://wiki.squid-cache.org/Features/SslPeekAndSplice
https://www.javaworld.com/article/2077475/core-java/java-tip-111--implement-https-tunneling-with-jsse.html

关于 openJDK Flight Recorder

Oracle 宣布 Flight Recorder 将在 OpenJDK 开源.具体看下面的链接里面, 说是在 OpenJDK 11 中 release.

https://bugs.openjdk.java.net/browse/JDK-8193393
http://openjdk.java.net/jeps/328

jcmd 命令

jps 首先做到 pid
jcmd help
jcmd $pid help
jcmd $pid help GC.heap_dump
//列出 JVM flags
jcmd $pid help VM.flags
jcmd $pid help VM.flags -all // 列出所有

jcmd $pid GC.heap_dump heap.hprof
可能是最新的 JVM 版本 支持使用 -all 选项, 不做full GC, dump 所有对象. 类似于 jmap 不用 live 选项
jcmd $pid GC.heap_dump -all
//-all : [optional] Dump all objects, including unreachable objects (BOOLEAN, false)