Skip to content
Snippets Groups Projects
Commit 8726ec29 authored by Anton Georgiev's avatar Anton Georgiev
Browse files

add JVM Heap monitor updated every 5 sec

parent f0a18f62
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,10 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.bigbluebutton.red5.client.messaging.ConnectionInvokerService;
import org.bigbluebutton.red5.pubsub.MessagePublisher;
import org.red5.logging.Red5LoggerFactory;
......@@ -80,9 +84,41 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter {
public boolean appStart(IScope app) {
super.appStart(app);
connInvokerService.setAppScope(app);
getHeapStats();
return true;
}
private void getHeapStats() {
Runnable getHeapTask = () -> getHeapStatsHelper();
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(getHeapTask, 0, 5, TimeUnit.SECONDS);
}
private void getHeapStatsHelper() {
int mb = 1024*1024;
// Getting the runtime reference from system
Runtime runtime = Runtime.getRuntime();
long usedMemory = (runtime.totalMemory() - runtime.freeMemory()) / mb;
long freeMemory = runtime.freeMemory() / mb;
long totalMemory = runtime.totalMemory() / mb;
long maxMemory = runtime.maxMemory() / mb;
Map<String, Object> logData = new HashMap<String, Object>();
logData.put("used", usedMemory);
logData.put("free", freeMemory);
logData.put("total", totalMemory);
logData.put("max", maxMemory);
Gson gson = new Gson();
String logStr = gson.toJson(logData);
log.info("JVM Heap [MB] data={}", logStr);
}
@Override
public void appStop(IScope app) {
super.appStop(app);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment