Verwenden der Sigar-API zum Abrufen der JVM-CPU-Auslastung
Ich verwende Sigar, um die CPU-Auslastung der aktuell ausgeführten JVM in einem Anwendungsserver abzurufen und für die Verlaufsansicht dieser Daten zu speichern, erhalte jedoch immer 0% CPU-Prozentsatz.
In der Zwischenzeit halte ich meine VisualVM offen, um die CPU-Auslastung zu überwachen, und sehe, wie sich die CPU in VisualVM in regelmäßigen Abständen ändert, während sie mit Sigar immer 0% meldet.
Hier ist der Code, den ich regelmäßig ausführe:
Sigar sigar = new Sigar();
ProcCpu cpu = null;
long pId = sigar.getPid(); // This one gives me the same process ID that I see in visualVM
try {
cpu = sigar.getProcCpu(pId);
}
catch (SigarException se) {
se.printStackTrace();
}
System.out.print(cpu.getPercent());
Dieser Code gibt immer 0%.
Was mache ich in diesem Fall falsch? Wie kann ich Sigar dazu bringen, die CPU-Auslastung ähnlich wie in VisualVM anzuzeigen?
Ich habe versucht hinzuzufügen
cpu.gather(sigar, pId);
nach dem Aufruf von getProcCpu (pid) erhalte ich aber immer nur zwei Werte (0.0 und 9.08729312E-315), auch wenn ich die Last auf dem Server weiter erhöhe und verringere ...