Java應用性能遠程監控系統(C/S架構)

適用於監控全部Java應用,具備堆內存監控、方法區監控、GC監控、類加載監控、類編譯監控與線程監控,提供堆快照下載,線程快照下載。mysql

1、簡介

JavaMonitor 發佈以後,受到了不少網友的好評,QQ羣也有不少人加入反饋建議。但 JavaMonitor 的侷限性也有不少,好比,沒法進行遠程監控,沒法監控多個服務器,佔用內存太大等等。爲了解決上述問題,基於 JavaMonitor-0.0.7 開發而成的 JavaMonitoPlus 誕生了!JavaMonitoPlus 不只解決了上述三個問題,並且增長了安全認證,優化了緩存,使頁面訪問更加流暢!git

2、環境

要求JDK8及以上,必須有Java環境變量,且Java環境變量不衝突!github

3、使用

首先,在releases下載發行版壓縮包,解壓。spring

在須要監控的主機上運行 client.jar 包便可,默認8081端口,能夠追加參數--server.port=9999更改。sql

而後,在做爲監控中心的主機上運行 server.jar 包,默認8888端口,到這裏是不會成功的,由於還須要在該jar包目錄下,新建配置文件並配置監控的主機列表,詳細介紹接下來會說到。數據庫

4、主機

配置監控的主機很是簡單,只須要在jar包所在目錄下新建application.properties文件,配置如下字段便可。json

monitor.serve[0].name=serve-1
monitor.serve[0].address=http://127.0.0.1:8081
monitor.serve[1].name=serve-1
monitor.serve[1].address=http://127.0.0.1:8082

注意:必定要寫明HTTP協議!name值若不寫,默認就是主機地址。緩存

5、監控

默認監控頻率爲60秒,而且只記錄當天產生的監控數據。安全

若是須要自定義監控頻率與監控時長,只須要在jar包所在目錄下新建application.properties文件,修改下列字段便可服務器

monitor.rate=60 #監控頻率/秒
monitor.cron=0 0 0 * * ? #每日的0:00:00時刻清空數據

連續監控1個月,示例

monitor.cron=0 0 0 1 * ?

連續監控1年,示例

monitor.cron=0 0 0 1 1 ? *

6、安全

JMP 默認是不開啓安全認證的,若要開啓請在application.properties文件中添加

monitor.open=true

默認用戶名/密碼爲admin,修改方法爲

monitor.username=admin
monitor.password=admin

7、MySQL

JMP內嵌H2數據庫,有諸多限制,不過JMP提供MySQL數據庫的支持。

使用方法很簡單,新建application.properties文本文件放在jar包目錄下,修改下列參數便可,這樣數據庫就更換爲了MySQL。

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update

8、監控參數

  • S0C:s0(from)的大小
  • S1C:s1(from)的大小
  • S0U:s0(from)已使用的空間
  • S1U:s1(from)已經使用的空間
  • EC:eden區的大小
  • EU:eden區已經使用的空間
  • OC:老年代大小
  • OU:老年代已經使用的空間
  • MC:元空間的大小(Metaspace)
  • MU:元空間已使用大小
  • CCSC:壓縮類空間大小(compressed class space)
  • CCSU:壓縮類空間已使用大小
  • YGC:新生代gc次數
  • YGCT:新生代gc耗時
  • FGC:Full gc次數
  • FGCT:Full gc耗時
  • GCT:gc總耗時
  • Loaded:表示載入了類的數量
  • Unloaded:表示卸載類的數量
  • Compiled:表示編譯任務執行的次數
  • Failed:表示編譯失敗的次數
  • Total:線程總數
  • Runnable:正在運行的線程數
  • Sleeping:休眠的線程數
  • Waiting:等待的線程數

9、關於做者

Github:https://github.com/yueshutong/JavaMonitor

郵箱:yster@foxmail.com

QQ羣:781927207

JM項目遇到的小坑

Thymeleaf

在HTML頁面取值時不要使用getter方法,直接.value便可。

反例:map.getValue()

正例:map.value

FastJson

將json字符串轉爲 Map<String, MyObject> 類型的對象

正例:JSON.parseObject(json, Map.class)

將json字符串轉爲 List<MyObject> 類型的對象

正例:JSON.parseArray(json, MyObject.class)

注意!MyObject.class 必定有無參構造方法!

相關文章
相關標籤/搜索