Buscando una manera de estar monitorizando la JVM usando algo ‘light’, en este caso, llegué a la conclusión de usar un CFC como web service devolviendo en format JSON el estado actual de la JVM, ademas de permitirme escribir un log en ColdFusion.
Ejemplo del ‘output’:
{
"PERCENTFREEALLOCATED":85.0,
"FREEMEMORY":214.0,
"MAXMEMORY":455.0,
"TOTALMEMORY":253.0,
"PERCENTALLOCATED":56.0
}
El código es muy simple para prevenir carga innecesaria en el servidor e incluso en la JVM.
Código wsJVM.cfc:
component {
remote struct function getJVMstat()
returnformat="JSON" {
var result = {};
var runtime = CreateObject("java","java.lang.Runtime").getRuntime();
result.freememory = round(runtime.freeMemory()/1024^2);
result.totalmemory = round(runtime.totalMemory()/1024^2);
result.maxmemory = round(runtime.maxMemory()/1024^2);
result.percentfreeallocated = round((result.freeMemory/result.totalMemory)*100);
result.percentallocated = round((result.totalMemory/result.maxMemory)*100);
writelog("freememory=#result.freememory# totalmemory=#result.totalmemory# maxmemory=#result.maxmemory# percentfreeallocated=#result.percentfreeallocated# percentallocated=#result.percentallocated#","information",false,"jvmstats");
return result;
}
}
