资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
通过JConsole监控Tomcat1、打开tomcat5的bin目录中的catalina.bat文件,在头部注释部分的后面加上:set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false2、修改JMX远程访问授权。进入JAVA安装目录的jre6libmanagement目录,把jmxremote.password.template文件改名为jmxremote.password,去掉最后两行的注释(用户名和密码):monitorRoleQEDcontrolRoleR&D确保jmxremote.access文件末尾的访问角色没有被注释掉:monitorRolereadonlycontrolRolereadwrite create javax.management.monitor.*,javax.management.timer.* unregister然后分别选择这两个文件,点右键“属性”-安全,点“高级”,去掉“从父项继承.”,弹出窗口中选“删除”,这样删除了所有访问权限。再选“添加”-高级,“立即查找”,选中你的用户,例administrator,点“确定,“确定。来到权限窗口,勾选完全控制,点确定注:JDK好像需要装在NTFS文件系统下才行3、启动Tomcat4、在命令行输入netstat -an查看端口8999是否已经打开,如果没有,则是前面的配置没配好。5、如果已经配置好,则在命令行输入jconsole,打开jdk自带的JMX客户端,选择远程连接,录入tomcat所在机器的IP,端口例192.168.1.100:8999,帐号、密码在jmxremote.password中,如帐号controlRole,密码R&D(缺省monitorRole只能读,controlRole能读写,jmxremote.access中可配置)。点“连接”。参考:http:/blog.csdn.net/airobot008/archive/2009/03/03/3951524.aspx精选文档编写JAVA程序收集Tomcat性能数据importjava.lang.management.MemoryUsage;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Formatter;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;importjavax.management.MBeanAttributeInfo;importjavax.management.MBeanInfo;importjavax.management.MBeanServerConnection;importjavax.management.ObjectInstance;importjavax.management.ObjectName;importjavax.management.openmbean.CompositeDataSupport;importjavax.management.remote.JMXConnector;importjavax.management.remote.JMXConnectorFactory;importjavax.management.remote.JMXServiceURL;publicclassMonitorTomcat /*paramargs*/publicstaticvoidmain(String args) tryString jmxURL =service:jmx:rmi:/jndi/rmi:/192.168.1.100:8999/jmxrmi;/tomcatjmxurlJMXServiceURL serviceURL =newJMXServiceURL(jmxURL);Mapmap =newHashMap();String credentials =newString monitorRole,QED;map.put(jmx.remote.credentials, credentials);JMXConnector connector = JMXConnectorFactory.connect(serviceURL,map);MBeanServerConnectionmbsc = connector.getMBeanServerConnection();/端口最好是动态取得ObjectName threadObjName =newObjectName(Catalina:type=ThreadPool,name=http-8080);精选文档MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);String attrName =currentThreadCount;/tomcat的线程数对应的属性值MBeanAttributeInfombAttributes= mbInfo.getAttributes();System.out.println(currentThreadCount:+mbsc.getAttribute(threadObjName, attrName);/heapfor(intj=0;j mbsc.getDomains().length;j+)System.out.println(#+mbsc.getDomains()j);SetMBeanset = mbsc.queryMBeans(null,null);System.out.println(MBeanset.size() : + MBeanset.size();IteratorMBeansetIterator = MBeanset.iterator();while(MBeansetIterator.hasNext() ObjectInstance objectInstance = (ObjectInstance)MBeansetIterator.next();ObjectName objectName = objectInstance.getObjectName();String canonicalName = objectName.getCanonicalName();System.out.println(canonicalName : + canonicalName);if(canonicalName.equals(Catalina:host=localhost,type=Cluster)/ Get details of cluster MBeansSystem.out.println(Cluster MBeans Details:);System.out.println(=);/getMBeansDetails(canonicalName);StringcanonicalKeyPropList= objectName.getCanonicalKeyPropertyListString();/- system -ObjectName runtimeObjName =newObjectName(java.lang:type=Runtime);System.out.println(厂商:+ (String)mbsc.getAttribute(runtimeObjName,VmVendor);System.out.println(程序:+ (String)mbsc.getAttribute(runtimeObjName,VmName);System.out.println(版本:+ (String)mbsc.getAttribute(runtimeObjName,VmVersion);Date starttime=newDate(Long)mbsc.getAttribute(runtimeObjName,StartTime);SimpleDateFormat df =newSimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(启动时间:+df.format(starttime);精选文档Long timespan=(Long)mbsc.getAttribute(runtimeObjName,Uptime);System.out.println(连续工作时间:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号