




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通过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,端口例00:8999,帐号、密码在jmxremote.password中,如帐号controlRole,密码R&D(缺省monitorRole只能读,controlRole能读写,jmxremote.access中可配置)。点“连接”。参考:/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:/00: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(连续工作时间:+MonitorTomcat.formatTimeSpan(timespan);/- JVM -/堆使用率ObjectName heapObjName =newObjectName(java.lang:type=Memory);MemoryUsage heapMemoryUsage =MemoryUsage.from(CompositeDataSupport)mbsc.getAttribute(heapObjName,HeapMemoryUsage);longmaxMemory= heapMemoryUsage.getMax();/堆最大longcommitMemory = heapMemoryUsage.getCommitted();/堆当前分配longusedMemory = heapMemoryUsage.getUsed();System.out.println(heap:+(double)usedMemory*100/commitMemory+%);/堆使用率MemoryUsage nonheapMemoryUsage =MemoryUsage.from(CompositeDataSupport)mbsc.getAttribute(heapObjName,NonHeapMemoryUsage);longnoncommitMemory = nonheapMemoryUsage.getCommitted();longnonusedMemory = heapMemoryUsage.getUsed();System.out.println(nonheap:+(double)nonusedMemory*100/noncommitMemory+%);ObjectName permObjName =newObjectName(java.lang:type=MemoryPool,name=Perm Gen);MemoryUsage permGenUsage =MemoryUsage.from(CompositeDataSupport)mbsc.getAttribute(permObjName,Usage);longcommitted = permGenUsage.getCommitted();/持久堆大小longused = heapMemoryUsage.getUsed();/System.out.println(perm gen:+(double)used*100/committed+%);/持久堆使用率/- Session -ObjectName managerObjName =newObjectName(Catalina:type=Manager,*);Set s=mbsc.queryNames(managerObjName,null);for(ObjectName obj:s)System.out.println(应用名:+obj.getKeyProperty(path);ObjectNameobjname=newObjectName(obj.getCanonicalName();System.out.println(最大会话数:+ mbsc.getAttribute(objname,maxActiveSessions);System.out.println(会话数:+ mbsc.getAttribute(objname,activeSessions);System.out.println(活动会话数:+ mbsc.getAttribute(objname,sessionCounter);/- Thread Pool -ObjectName threadpoolObjName =newObjectName(Catalina:type=ThreadPool,*);Set s2=mbsc.queryNames(threadpoolObjName,null);for(ObjectName obj:s2)System.out.println(端口名:+obj.getKeyProperty(name);ObjectName objname=newObjectName(obj.getCanonicalName();System.out.println(最大线程数:+ mbsc.getAttribute( objname,maxThreads);System.out.println(当前线程数:+ mbsc.getAttribute( objname,currentThreadCount);System.out.println(繁忙线程数:+ mbsc.getAttribute( objname,currentThreadsBusy);catch(Exception e) e.printStackTrace();publicstaticString formatTimeSpan(longspan)longminseconds = span % 1000;span = span /1000;longseconds = span % 60;span = span / 60;longmins = span % 60;span = span / 60;longhours = span % 24;span = span / 24;longdays = span;return(newFormatter().format(%1$d天%2$02d:%3$02d:%4$02d.%5$03d, days,hours,mins,seconds,minseconds).toString();记录的数据:currentThreadCount:150#JMImplementation#Users#com.sun.management#Catalina#java.lang#java.util.loggingMBeanset.size() : 383canonicalName : Catalina:name=HttpRequest152,type=RequestProcessor,worker=http-8080canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=/localhost/jsp-examples,j2eeType=Servlet,name=org.apache.jsp.jsp2.el.basic_002dcomparisons_jspcanonicalName : Catalina:port=8009,type=MappercanonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=/localhost/jsp-examples,j2eeType=Servlet,name=org.apache.jsp.dates.date_jsp厂商:Sun Microsystems Inc.程序:Java HotSpot(TM) Client VM版本:11.3-b02启动时间:2010-02-0911:36:59连续工作时间:0天00:13:55.775heap:62.221410820735%nonheap:84.59782727899399%perm gen:210.93058268229166%应用名:/jsp-examples最大会话数:-1会话数:0活动会话数:0应用名:/最大会话数:-1会话数:0活动会话数:0应用名:/host-manager最大会话数:-1会话数:0活动会话数:0应用名:/tomcat-docs最大会话数:-1会话数:0活动会话数:0应用名:/AltoroJ最大会话数:-1会话数:301活动会话数:301应用名:/webdav最大会话数:-1会话数:0活动会话数:0应用名:/servlets-examples最大会话数:-1会话数:0活动会话数:0应用名:/manager最大会话数:-1会话数:0活动会话数:0应用名:/balancer最大会话数:-1会话数:0活动会话数:0端口名:http-8080最大线程数:150当前线程数:150繁忙线程数:100端口名:jk-8009最大线程数:200当前线程数:4繁忙线程数:1参考:/airobot008/archive/2009/03/03/3951524.aspx使用LR的lr_user_data_point函数/ This script collects server metrics from the Tomcat Status page (:8080/manager/status)./ Runtime settings are set to run this script once every 5 seconds.double atof (const char *string); /* Explicit declaration */extern char* strtok(char *token, const char *delimiter);CollectMetrics()int countP, countS, countF, countR, countK;int numValues;static int loggedVersionInfo = FALSE;lr_save_string(:8080, ServerName);web_set_max_html_param_len(102480); / 65536 Note: this may need to be increased.web_set_user(admin,123456,ServerName);lr_start_transaction(monitor tomcat);/*JVM Free memory: 130.99 MB Total memory: 254.18 MB Max memory: 1016.12 MB*/web_reg_save_param(JVMFreeMemory,LB=Free memory: ,RB= MB,Ord=1,LAST);web_reg_save_param(JVMTotalMemory,LB=Total memory: ,RB= MB,Ord=1,LAST);web_reg_save_param(JVMMaxMemory,LB=Max memory: ,RB= MB,Ord=1,LAST);/*http-8080 Max threads: 150 Min spare threads: 25 Max spare threads: 75 Currentthread count: 25 Current thread busy: 2Max processing time: 78 ms Processing time: 0.124 sRequest count: 11 Error count: 3 Bytes received: 0.00 MB Bytes sent: 0.03 MB*/web_reg_save_param(HTTPMaxThreads,LB=Max threads: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPMinSpareThreads,LB=Min spare threads: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPMaxSpareThreads,LB=Max spare threads: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPCurrentSpareThreads,LB=Current thread count: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPCurrentThreadBusy,LB=Current thread busy: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPMaxProcessingTime,LB=Max processing time: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPRequestCount,LB=Request count: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPErrorCount,LB=Error count: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPBytesReceived,LB=Bytes received: ,RB= ,Ord=1,LAST);web_reg_save_param(HTTPBytesSent,LB=Bytes sent: ,RB= ,Ord=1,LAST);/*jk-8009 Max threads: 200 Min spare threads: 4 Max spare threads: 50 Current thread count: 8 Current thread busy: 6 Max processing time: 8031 ms Processing time: 199.1 s Request count: 11279 Error count: 426 Bytes received: 0.00 MB Bytes sent: 100.88 MB*/web_reg_save_param(JKMaxThreads,LB=Max threads: ,RB= ,Ord=2,LAST);web_reg_save_param(JKMinSpareThreads,LB=Min spare threads: ,RB= ,Ord=2,LAST);web_reg_save_param(JKMaxSpareThreads,LB=Max spare threads: ,RB= ,Ord=2,LAST);web_reg_save_param(JKCurrentSpareThreads,LB=Current thread count: ,RB= ,Ord=2,LAST);web_reg_save_param(JKCurrentThreadBusy,LB=Current thread busy: ,RB= ,Ord=2,LAST);web_reg_save_param(JKMaxProcessingTime,LB=Max processing time: ,RB= ,Ord=2,LAST);web_reg_save_param(JKRequestCount,LB=Request count: ,RB= ,Ord=2,LAST);web_reg_save_param(JKErrorCount,LB=Error count: ,RB= ,Ord=2,LAST);web_reg_save_param(JKBytesReceived,LB=Bytes received: ,RB= ,Ord=2,LAST);web_reg_save_param(JKBytesSent,LB=Bytes sent: ,RB= ,Ord=2,LAST);/ Version Information/*Server InformationTomcat VersionJVM VersionJVM VendorOS NameOS VersionOS ArchitectureApache Tomcat/.0_15-b04Sun Microsystems Inc.Windows 20035.2x86*/web_reg_save_param(ServerTomcatVersion,LB=,RB=,Ord=1,LAST);web_reg_save_param(ServerJVMVersion,LB=,RB=,Ord=2,LAST);web_reg_save_param(ServerJVMVendor,LB=,RB=,Ord=3,LAST);web_reg_save_param(ServerOSName,LB=,RB=,Ord=4,LAST);web_reg_save_param(ServerOSVersione,LB=,RB=,Ord=5,LAST);web_reg_save_param(ServerOSArchitecture,LB=,RB=,Ord=6,LAST);/*/ Determine number of threads in each state./ P: Parse and prepare request S: Service F: Finishing R: Ready K: Keepaliveweb_reg_save_param(StageTable,LB=StageTimeB SentB RecvClientVHostRequest, /Stage, /TimeB SentB RecvClientVHostRequest,RB=,Ord=All,/ note that there should only be 2 tables in this test environment.LAST);*/web_reg_find(Text=/manager,LAST);web_url(status,URL=http:/ServerName/manager/status,Resource=0,RecContentType=text/html,Referer=,Snapshot=t1.inf,Mode=HTTP,LAST);lr_end_transaction(monitor tomcat, LR_AUTO);/ Tomcat JVM metricslr_user_data_point(Tomcat JVM Free memory, atof(lr_eval_string(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精肉技工考试题及答案
- 酒店代租代管协议合同
- 自宰生猪售卖合同范本
- 网络销售供货合同范本
- 瓷砖场地租赁合同范本
- 酒水压货活动合同范本
- 维修销售电器合同范本
- 2025至2030中国移动出行行业经营管理风险与盈利模式分析报告
- 单招动漫专业试题及答案
- 通信专业笔试题目及答案
- DB1331-T 025.4-2022 雄安新区工程建设关键质量指标体系:合交通
- 2024至2030年中国喷水推进器行业发展形势分析及市场前景趋势报告
- 陶渊明专题课件
- 人参培训课件
- 四川省价建筑地下结构抗浮锚杆技术标准
- 2023年航空公司招聘:机场安检员基础知识试题(附答案)
- 糖尿病临床病例分析经典案例
- 老年人体检分析报告总结
- 第4课《用联系的观点看问题》第2框《在和谐共处中实现人生发展》-【中职专用】《哲学与人生》同步课堂课件
- 计量安全防护
- 食品生物技术原理课件
评论
0/150
提交评论