loadrunner监控tomcatWord格式.docx
- 文档编号:22299373
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:27
- 大小:21.21KB
loadrunner监控tomcatWord格式.docx
《loadrunner监控tomcatWord格式.docx》由会员分享,可在线阅读,更多相关《loadrunner监控tomcatWord格式.docx(27页珍藏版)》请在冰豆网上搜索。
4、在命令行输入netstat-an
查看端口8999是否已经打开,如果没有,则是前面的配置没配好。
5、如果已经配置好,则在命令行输入jconsole,打开jdk自带的JMX客户端,选择远程连接,录入tomcat所在机器的IP,端口例192.168.1.100:
8999,、密码在jmxremote.password中,如controlRole,密码R&
D(缺省monitorRole只能读,controlRole能读写,jmxremote.access中可配置)。
点“连接”。
参考:
编写JAVA程序收集Tomcat性能数据
import
java.lang.management.MemoryUsage;
java.text.SimpleDateFormat;
java.util.Date;
java.util.Formatter;
java.util.HashMap;
java.util.Iterator;
java.util.Map;
java.util.Set;
javax.management.MBeanAttributeInfo;
javax.management.MBeanInfo;
javax.management.MBeanServerConnection;
javax.management.ObjectInstance;
javax.management.ObjectName;
javax.management.openmbean.CompositeDataSupport;
javax.management.remote.JMXConnector;
javax.management.remote.JMXConnectorFactory;
javax.management.remote.JMXServiceURL;
public
class
MonitorTomcat{
/**
*
param
args
*/
static
void
main(String[]args){
try
{
StringjmxURL=
"
service:
jmx:
rmi:
///jndi/rmi:
//192.168.1.100:
8999/jmxrmi"
;
//tomcat
jmx
url
JMXServiceURLserviceURL=
new
JMXServiceURL(jmxURL);
Map
map=
HashMap();
String[]credentials=
String[]{
monitorRole"
QED"
};
map.put("
jmx.remote.credentials"
credentials);
JMXConnectorconnector=JMXConnectorFactory.connect(serviceURL,
map);
MBeanServerConnection
mbsc=connector.getMBeanServerConnection();
//端口最好是动态取得
ObjectNamethreadObjName=
ObjectName("
Catalina:
type=ThreadPool,name=http-8080"
);
MBeanInfombInfo=mbsc.getMBeanInfo(threadObjName);
StringattrName=
currentThreadCount"
//tomcat的线程数对应的属性值
MBeanAttributeInfo[]
mbAttributes
=mbInfo.getAttributes();
System.out.println("
currentThreadCount:
+mbsc.getAttribute(threadObjName,attrName));
//heap
for(int
j=0;
j<
mbsc.getDomains().length;
j++){
###########"
+mbsc.getDomains()[j]);
}
Set
MBeanset=mbsc.queryMBeans(null,
null);
MBeanset.size():
"
+MBeanset.size());
Iterator
MBeansetIterator=MBeanset.iterator();
while
(MBeansetIterator.hasNext()){
ObjectInstanceobjectInstance=(ObjectInstance)MBeansetIterator.next();
ObjectNameobjectName=objectInstance.getObjectName();
StringcanonicalName=objectName.getCanonicalName();
canonicalName:
+canonicalName);
if
(canonicalName.equals("
host=localhost,type=Cluster"
))
//GetdetailsofclusterMBeans
ClusterMBeansDetails:
========================================="
//getMBeansDetails(canonicalName);
String
canonicalKeyPropList
=objectName.getCanonicalKeyPropertyListString();
//-------------------------system----------------------
ObjectNameruntimeObjName=
java.lang:
type=Runtime"
厂商:
+(String)mbsc.getAttribute(runtimeObjName,
VmVendor"
));
程序:
VmName"
版本:
VmVersion"
Datestarttime=new
Date((Long)mbsc.getAttribute(runtimeObjName,
StartTime"
SimpleDateFormatdf=
SimpleDateFormat("
yyyy-MM-ddHH:
mm:
ss"
启动时间:
+df.format(starttime));
Longtimespan=(Long)mbsc.getAttribute(runtimeObjName,
Uptime"
连续工作时间:
+MonitorTomcat.formatTimeSpan(timespan));
//------------------------JVM-------------------------
//堆使用率
ObjectNameheapObjName=
type=Memory"
MemoryUsageheapMemoryUsage=
MemoryUsage.from((CompositeDataSupport)mbsc.getAttribute(heapObjName,
HeapMemoryUsage"
long
maxMemory
=heapMemoryUsage.getMax();
//堆最大
commitMemory=heapMemoryUsage.getCommitted();
//堆当前分配
usedMemory=heapMemoryUsage.getUsed();
heap:
+(double)usedMemory*100/commitMemory+"
%"
MemoryUsagenonheapMemoryUsage=
NonHeapMemoryUsage"
noncommitMemory=nonheapMemoryUsage.getCommitted();
nonusedMemory=heapMemoryUsage.getUsed();
nonheap:
+(double)nonusedMemory*100/noncommitMemory+"
ObjectNamepermObjName=
type=MemoryPool,name=PermGen"
MemoryUsagepermGenUsage=
MemoryUsage.from((CompositeDataSupport)mbsc.getAttribute(permObjName,
Usage"
committed=permGenUsage.getCommitted();
//持久堆大小
used=heapMemoryUsage.getUsed();
//
permgen:
+(double)used*100/committed+"
//持久堆使用率
//--------------------Session---------------
ObjectNamemanagerObjName=
type=Manager,*"
Set<
ObjectName>
s=mbsc.queryNames(managerObjName,
for
(ObjectNameobj:
s){
应用名:
+obj.getKeyProperty("
path"
ObjectName
objname=new
ObjectName(obj.getCanonicalName());
最大会话数:
+mbsc.getAttribute(
objname,
maxActiveSessions"
会话数:
activeSessions"
活动会话数:
sessionCounter"
//-----------------ThreadPool----------------
ObjectNamethreadpoolObjName=
type=ThreadPool,*"
s2=mbsc.queryNames(threadpoolObjName,
s2){
端口名:
name"
ObjectNameobjname=new
最大线程数:
+mbsc.getAttribute(objname,
maxThreads"
当前线程数:
繁忙线程数:
currentThreadsBusy"
catch
(Exceptione){
e.printStackTrace();
StringformatTimeSpan(long
span){
minseconds=span%1000;
span=span/1000;
seconds=span%60;
span=span/60;
mins=span%60;
hours=span%24;
span=span/24;
days=span;
return
(new
Formatter()).format("
%1$d天
%2$02d:
%3$02d:
%4$02d.%5$03d"
days,hours,mins,seconds,minseconds).toString();
}
记录的数据:
150
###########JMImplementation
###########Users
###########.sun.management
###########Catalina
###########java.lang
###########java.util.logging
383
Catalina:
name=HttpRequest152,type=RequestProcessor,worker=http-8080
J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jsp-examples,j2eeType=Servlet,name=org.apache.jsp.jsp2.el.basic_002dcomparisons_jsp
……
port=8009,type=Mapper
J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jsp-examples,j2eeType=Servlet,name=org.apache.jsp.dates.date_jsp
SunMicrosystemsInc.
JavaHotSpot(TM)ClientVM
11.3-b02
2010-02-09
11:
36:
59
0天
00:
13:
55.775
62.5%
84.399%
210.166%
/jsp-examples
-1
/
/host-manager
/tomcat-docs
/AltoroJ
301
/webdav
/servlets-examples
/manager
/balancer
http-8080
100
jk-8009
200
4
1
使用LR的lr_user_data_point函数
//Thisscriptco
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- loadrunner 监控 tomcat