在EAS日常维护过程中,经常会遇到性能问题,性能问题的分析常常要收集性能日志。
收集rpc日志要打开rpc日志的开关,开启性能日志记录的方式如下:
1.查询eas/server/profiles/server1/config/jmxconnector.properties文件中http.port维护的端口信息
例如:http.port=11029
2.在浏览器中打开如下网址:
IP:端口,例如:192.168.1.2:11029
输入密码即可看到如下页面:
3.搜索invokeCounter,并点击打开
4.设置KSQLOn,RPCSQLOn,SQLPlanOn等参数。
这个网页设置是怎么实现的呢?
熟悉的同学可能一眼就看出了这是JMX。使用JMX可以在运行时动态的改变参数值,不需要重启服务器。那使用JMX如何实现上面的效果呢?话不多说,直接看demo。
1. 新建工程并引用依赖包jmxtool.jar
2. 新增接口TestMBean
public interface TestMBean {
public String getName();
public void setName(String name);
public String getNumber();
}
3. 新增实现类Test
public class Test implements TestMBean{
private String name = "";
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public String getNumber() {
return "haha";
}
}
4. 新增启动类JmxBeanService
public static void main(String[] args) throws Exception {
MBeanServer mBeanServer = MBeanServerFactory.createMBeanServer("aa");//创建MBeanServer
HtmlAdaptorServer adServer = new HtmlAdaptorServer();
adServer.setPort(11029);//设置服务端口
ObjectName objName = new ObjectName("Adapter:type=html");
mBeanServer.registerMBean(adServer, objName);
Test test = new Test();
objName = new ObjectName("tt:name=test");
mBeanServer.registerMBean(test, objName);//注册Mbean对象
adServer.start();
}
5. 启动工程,在服务器上访问此地址:localhost:11029
点击name=test
这里几个注意点:
1.接口命名分为两部分,【前缀】+MBean,注意MBean是固定的。
2.实现类名必须和前缀相同
(原因如下:
在注册Mbean时会校验类的接口名,接口名是通过 类名+MBean判断是否相等的
)
3.有变量有set方法即可在页面动态修改
那EAS中的JMX的MBean是在哪里注册的呢?出于信息安全不能展示源码
大家感兴趣的可以自己跟踪一下。
服务启动的入口(在servlet服务启动时通过ServletContextListener启动,所以只有在服务启动的时候会进一次):
com.kingdee.bos.management.ManagementServletListener.contextInitialized(
ServletContextEvent)
MBean类的配置文件位置(读取此配置文件实例化具体的MBean对象):
/Server/server/lib/common/bos/management.jar!/com/kingdee/bos/management/config/mbeans.properties
这个密码如何设置的,怎么修改呢