1 jmx exporter client

下载jmx_prometheus_javaagent-0.3.1.jar

启动:

nohup java -javaagent:jmx_prometheus_javaagent-0.3.1.jar=8888:config.yaml -XX:+PrintGCDetails -XX:+PrintGC -XX:+PrintGCTimeStamps -Xmx80m -Xms80m -Xmn40m  -Xloggc:gc.txt  -jar MyTest-1.0-SNAPSHOT-jar-with-dependencies.jar &

config.yaml:

---

rules:

- pattern: ".*"

代码:

public static void main(String[] args){

ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);

ses.scheduleAtFixedRate(new TimerTask(),0, 10, TimeUnit.SECONDS);

}

static class TimerTask implements Runnable {

@Override

public void run() {

{

System.out.println("run");

byte[] holder = new byte[32 * 1024 * 1024];

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

holder = null;

}

System.gc();

}

}

本地:

10s一次gc

run

5.477: [GC (System.gc()) [PSYoungGen: 3686K->496K(35840K)] 36454K->33272K(76800K), 0.0019729 secs] [Times: user=0.00 sys=0.01, real=0.00 secs]

5.479: [Full GC (System.gc()) [PSYoungGen: 496K->0K(35840K)] [ParOldGen: 32776K->431K(40960K)] 33272K->431K(76800K), [Metaspace: 3392K->3392K(1056768K)], 0.0075225 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]

run

15.463: [GC (System.gc()) [PSYoungGen: 8641K->1536K(35840K)] 41840K->34743K(76800K), 0.0054047 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]

15.468: [Full GC (System.gc()) [PSYoungGen: 1536K->0K(35840K)] [ParOldGen: 33207K->1870K(40960K)] 34743K->1870K(76800K), [Metaspace: 8653K->8653K(1056768K)], 0.0203323 secs] [Times: user=0.05 sys=0.00, real=0.02 secs]

run

25.464: [GC (System.gc()) [PSYoungGen: 2256K->96K(35840K)] 36894K->34742K(76800K), 0.0013583 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

25.465: [Full GC (System.gc()) [PSYoungGen: 96K->0K(35840K)] [ParOldGen: 34646K->1885K(40960K)] 34742K->1885K(76800K), [Metaspace: 8778K->8778K(1056768K)], 0.0438101 secs] [Times: user=0.05 sys=0.00, real=0.04 secs]

run

35.464: [GC (System.gc()) [PSYoungGen: 2459K->96K(35840K)] 37112K->34757K(76800K), 0.0014389 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

35.465: [Full GC (System.gc()) [PSYoungGen: 96K->0K(35840K)] [ParOldGen: 34661K->1887K(40960K)] 34757K->1887K(76800K), [Metaspace: 8845K->8845K(1056768K)], 0.0128475 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]

run

45.464: [GC (System.gc()) [PSYoungGen: 2254K->96K(35840K)] 36909K->34759K(76800K), 0.0008053 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

45.465: [Full GC (System.gc()) [PSYoungGen: 96K->0K(35840K)] [ParOldGen: 34663K->1888K(40960K)] 34759K->1888K(76800K), [Metaspace: 8880K->8880K(1056768K)], 0.0347415 secs] [Times: user=0.05 sys=0.00, real=0.03 secs]

visual vm

cc6f32f2da635280c456fe6607d50496.png

https://www.jianshu.com/p/adada9c1f7dd

https://github.com/prometheus/jmx_exporter/blob/master/README.md

2 server

43 - job_name: 'jmx'

44 scrape_interval: 1s

45 static_configs:

46 - targets: ['192.168.57.67:8888']

47 labels:

48 instance: java_test

546f7e67c599d0f1f455b7a5b8b2fb1e.png

jvm_memory_bytes_used of prom

19a17d349d576f9ed89838dba66d8b5f.png

58904.139: [Full GC (Ergonomics) [PSYoungGen: 39936K->0K(40448K)] [ParOldGen: 39452K->6784K(40960K)] 79388K->6784K(81408K), [Metaspace: 9581K->9581K(1058816K)], 0.0056723 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

58905.138: [GC (System.gc()) [PSYoungGen: 2927K->256K(40448K)] 9711K->7040K(81408K), 0.0023703 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

58905.140: [Full GC (System.gc()) [PSYoungGen: 256K->0K(40448K)] [ParOldGen: 6784K->6650K(40960K)] 7040K->6650K(81408K), [Metaspace: 9581K->9581K(1058816K)], 0.0186146 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]

58914.138: [Full GC (Ergonomics) [PSYoungGen: 39936K->0K(40448K)] [ParOldGen: 39418K->6770K(40960K)] 79354K->6770K(81408K), [Metaspace: 9581K->9581K(1058816K)], 0.0090674 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]

58915.137: [GC (System.gc()) [PSYoungGen: 4420K->288K(40448K)] 11190K->7058K(81408K), 0.0009626 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

58915.138: [Full GC (System.gc()) [PSYoungGen: 288K->0K(40448K)] [ParOldGen: 6770K->6684K(40960K)] 7058K->6684K(81408K), [Metaspace: 9581K->9581K(1058816K)], 0.0078362 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

58924.137: [Full GC (Ergonomics) [PSYoungGen: 39936K->0K(40448K)] [ParOldGen: 39452K->6783K(40960K)] 79388K->6783K(81408K), [Metaspace: 9581K->9581K(1058816K)], 0.0053898 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

58925.137: [GC (System.gc()) [PSYoungGen: 3666K->256K(40448K)] 10450K->7039K(81408K), 0.0004041 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

58925.137: [Full GC (System.gc()) [PSYoungGen: 256K->0K(40448K)] [ParOldGen: 6783K->6684K(40960K)] 7039K->6684K(81408K), [Metaspace: 9581K->9581K(1058816K)], 0.0064194 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]

1 可以看出本地与线上都是10s一次gc

2 本地和线上内存有一定差异,但内存周期基本一致

3 dashbard

推荐3066和3457

3457的json需要注意:

label_values(up{job='jmx'}, instance)

这里好像只能监控一个job,这里的job对应于server的job_name

另外两个dash好像对于10s级别的内存都没有很好的输出

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐