Użycie Sigar API do użycia procesora JVM
Używam Sigara, aby uzyskać wykorzystanie procesora bieżącej działającej maszyny JVM na serwerze aplikacji i przechować ją do widoku historycznego tych danych, ale zawsze otrzymuję 0% procentu procesora.
W międzyczasie trzymam mój visualVM otwarty do monitorowania wykorzystania procesora i widzę, że procent CPU zmienia się okresowo w visualVM, podczas gdy zawsze zgłasza 0% używając Sigara.
Oto kod, który uruchamiam okresowo:
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());
Ten kod zawsze daje 0%.
Co robię źle w tym przypadku? Jak mogę sprawić, by Sigar wyświetlał użycie procesora podobne do użycia w VisualVM?
Próbowałem dodać
cpu.gather(sigar, pId);
po wywołaniu getProcCpu (pid), ale otrzymuję tylko dwie wartości (0.0 i 9.08729312E-315), nawet jeśli ciągle zwiększam i zmniejszam obciążenie serwera ...