游戏服务器运行过程中,我们希望能够对游戏里各种资源进行监控。比如,查看在线玩家总人数,查看内存使用情况,统计请求消息数量等等。这种问题归结起来就是,我们希望查看游戏进程的内存数据。
前边有一篇文章 (查看生产环境的内存数据),介绍如果通过加载类文件或使用javascript脚本查看内存数据。但这篇文章并没有介绍如何让游戏进程执行我们外部的代码,这属于跨进程通信的范畴,总体来说也是比较复杂的。
现在,我打算介绍另外一种黑科技,让监控游戏服务器更加方便快捷。
我们使用的工具叫做JMX(Java Management Extentesions),简单来说,就是对运行中的服务器进行各种资源监控的工具。
有了JMX,我们可以轻易查看游戏进程里的各种资源,甚至触发各种管理接口。
我们直奔主题,来点干货吧。
1.使用JMX工具,我们首先需要定义一个接口,该接口必须以MBean词尾
定义MBean接口(ControllerMBean.java)
package com.kingston.jmx;
public interface ControllerMBean {
/**
* 统计在线玩家总数
* @return
*/
int getOnlinePlayerSum();
/**
* 统计内存使用情况
* @return
*/
String getMemoryInfo();
/**
* 执行指定脚本
* @param scriptId
*/
void exceScr