簡體   English   中英

Java 應用程序監控更長時間?

[英]Java application monitoring over longer time periods?

使用 JConsole 之類的工具,我可以實時監控 Java 應用程序。 如何分析較長時間段的性能? 比方說一天? 還是周?

我可以使用像 jConsole 這樣的簡單工具嗎?

通用的“盡可能多地監控參數”方法有一些選項:

  • 命令行: jcmd <PID|main class> PerfCounter.print ( ref ) – 然后您需要了解它輸出的屬性的名稱,安排定期運行它,將數據存儲在某處,自己可視化它。
  • JMX bean 也公開了很多(全部?)這些信息。 然后您可以找到它們(例如,您可以在 JConsole 中看到它們以及它們導出的內容),並使用諸如jmxterm之類的命令行工具,您可以記錄這些值並將它們可視化。 同樣的程序:安排自己,記錄,想象自己。 它不是太用戶友好,所以我提到這種方法的原因是......
  • ...人們通常使用可以從 Java 收集信息的專用監控系統(想想 Graphite、Zabbix、Logstash/Kibana 等——我將這些作為搜索鍵與“Java/JVM/JMX/JFR”一起放入)通過 JMX 處理並很好地呈現它。 這些系統解決了周期性運行、存儲時間序列數據、可視化等問題。
  • JFR (“Java Flight Recorder”)是 JVM 中內置的一種機制,它允許連續記錄許多 JVM + 系統指標,定期將它們轉儲到文件中,然后您可以使用JMC (“Java Mission Control”)將它們可視化。 從某種意義上說,它“更便宜”,因為您不需要安裝/支持單獨的監控系統,但訪問性較差(除非與監控系統配對):您需要收集、下載、處理文件

除了這些之外,還有一個與 jcmd 基本相同的jstat jcmd... PerfCounter.print ,但主要用於與內存相關的指標,它具有內置的“定期運行”功能,並且呈現的結果略有不同(一個“記錄” – 1 行)。

我想說:如果你需要做一次或偶爾做一次,無論是在更長的時間里,並且只需要幾個參數,比如內存/線程數/...,然后使用jstatjcmd PerfCounter.print 如果您需要更多參數,那么 JFR/JMC。 如果您需要它作為與您的系統一起運行的東西,始終收集和呈現,可供在 JVM 所在的系統中沒有管理員權限的人使用,然后查看監控系統及其與 Java 應用程序的集成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM