JConsole 远程监控Tomcat服务
如何安装监控tomcat服务,防止tomcat死掉系统无法服务的问题
安装tomcat监控服务安装tomcat监控服务的目的是为了随时监测tomcat的运行状况,若出现内存溢出或其它不能提供正常服务的情况,系统自动能重启tomcat服务,由此减少开发服务人员的工作量,也能提高服务质量。
安装设置分为以下四个步骤:一、创建监控页面在项目系统里添加一个提供监控系统访问的页面monitor.jsp,只需输出一句代码,代码如下:<%String s=”ok”;out.println(s.length());%>二、修改tomcat配置若是系统自动安装的服务,可直接跳过这一步。
但是需确定服务名称,以便在以后的步骤使用,如下图:服务名称若是手动为tomcat设置服务,请按以下步骤进行:1、进入tomcat目录下的bin目录,用记事本打开service.bat文件,找到setSERVICE_NAME=TOMCA TXX这一句,把后面的值改成自己对tomcat设置的服务名,把PR_DISPLAYNAME的值设置为显示的服务名称,这个是在系统管理的服务里面中列表里显示的名字。
如设置信访系统,则设置为这样:Set SERVICE_NAME=xfglSet PR_DISPLA YNAME=tomcat xfgl保存。
2、在运行里输入“CMD ”,进入命令控制台,使用cd 命令转到tomcat 目录下的bin 目录,运行service.bat install 命令,把tomcat 设置为系统启动服务。
3、进入控制面板->管理工具->服务,在服务列表中找到“tomcat xfgl ”一项,双击弹出窗口,把启动类型改为“自动”,确定保存。
三、 设置监控脚本文件新建一个vbs 脚本文件,用于访问tomcat 服务下的一个jsp 页面monitor.jsp 。
脚本代码如下:该脚本的目的是定时访问monitor.jsp 页面,判断页面返回的状态码,若状态不为200,则表示该页面未正常返回,可能是tomcat服务出了问题,随后自动重启tomcat服务,并记录日志,把日志记录在C盘,日志文件以tomcat服务名和当前日期命名。
linux下tomcat设置
linux下tomcat设置最大连接数,设置最大内存,使用Jconsole监控TomcatLinuxJava多线程配置管理1. 添加tomcat管理员帐户添加管理员账户tomcat-users.xml<?xml version='1.0' encoding='utf-8'?><tomcat-users><role rolename="tomcat"/><role rolename="role1"/><role rolename="manager"/><role rolename="admin"/><user username="tomcat" password="tomcat" roles="tomcat"/><user username="both" password="tomcat" roles="tomcat,role1"/><user username="role1" password="tomcat" roles="role1"/><user username="admin" password="admin123" roles="admin,manager"/> </tomcat-users>2. TOMCAT内存基本原理:JAVA程序启动时都会JVM 都会分配一个初始内存和最大内存给这个应用程序。
这个初始内存和最大内存在一定程度都会影响程序的性能。
jconsole工具使用
jconsole⼯具使⽤Jconsole,Java Monitoring and Management Console。
是JDK⾃带的⼯具,在JDK/bin⽬录下可以找到。
它⽤于连接正在运⾏的本地或者远程的,对运⾏在应⽤程序的资源消耗和性能进⾏监控,并画出⼤量的图表,提供强⼤的可视化界⾯。
⽽且本⾝占⽤的服务器内存很⼩,甚⾄可以说⼏乎不消耗。
⼀、介绍JConsole 是⼀个内置 Java 性能分析器,可以从命令⾏(直接输⼊jconsole)或在 GUI shell (jdk\bin下打开)中运⾏。
它⽤于对JVM中内存,线程和类等的监控。
可使⽤JTop插件。
它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控⼏个jvm。
这款⼯具的好处在于,占⽤系统资源少,⽽且结合Jstat,可以有效监控到java内存的变动情况,以及引起变动的原因。
在项⽬追踪内存泄露问题时,很实⽤。
使⽤ JConsole 进⾏⼯作分析器有⾃⼰的开销,因此最好的办法就是花点时间来弄清是什么开销。
发现 JConsole 开销最简单的办法是,⾸先独⾃运⾏⼀个应⽤程序,然后在分析器下运⾏,并测量差异。
(应⽤程序不能太⼤或者太⼩;我最喜欢使⽤ JDK 附带的 SwingSet2 样本。
)因此,我使⽤-verbose:gc尝试运⾏ SwingSet2 来查看垃圾收集清理,然后运⾏同⼀个应⽤程序并将 JConsole 分析器连接到它。
当 JConsole 连接好了之后,⼀个稳定的 GC 清理流出现,否则不会出现。
这就是分析器的性能开销。
远程监控⼆、远程监控⼆、因为 Web 应⽤程序分析⼯具假设通过⼀个套接字进⾏连通性分析,只需要进⾏少许配置来设置 JConsole(或者是基于 JVMTI 的分析器,就这点⽽⾔),监控/分析远程运⾏的应⽤程序。
远程监控与本地监控配置类似,这⾥以监控远程为例。
1、监控tomcat服务器端:详细步骤如下所⽰:1、修改Tomcat的bin⽬录下的catalina.bat⽂件vi catalina.sh找到# OS specific support. $var _must_ be set to either true or false.添加如下变量:JAVA_OPTS="${JAVA_OPTS} -Djava.rmi.server.hostname=192.168.56.253-Dcom.sun.management.jmxremote.port=9999-Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.acccess.file=/usr/local/tomcat/bin/jconsole/jmxremote.access-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/bin/jconsole/jmxremote.password"注意:这⾥是⼀⾏,空格不合适可能会启动不了服务。
基于windows服务监控tomcat服务,防止tomcat死掉
安装tomcat监控服务安装tomcat监控服务的目的是为了随时监测tomcat的运行状况,若出现内存溢出或其它不能提供正常服务的情况,系统自动能重启tomcat服务,由此减少开发服务人员的工作量,也能提高服务质量。
安装设置分为以下四个步骤:一、创建监控页面在项目系统里添加一个提供监控系统访问的页面monitor.jsp,只需输出一句代码,代码如下:<%String s=”ok”;out.println(s.length());%>二、修改tomcat配置若是系统自动安装的服务,可直接跳过这一步。
但是需确定服务名称,以便在以后的步骤使用,如下图:服务名称若是手动为tomcat设置服务,请按以下步骤进行:1、进入tomcat目录下的bin目录,用记事本打开service.bat文件,找到setSERVICE_NAME=TOMCA TXX这一句,把后面的值改成自己对tomcat设置的服务名,把PR_DISPLAYNAME的值设置为显示的服务名称,这个是在系统管理的服务里面中列表里显示的名字。
如设置信访系统,则设置为这样:Set SERVICE_NAME=xfglSet PR_DISPLAYNAME=tomcat xfgl保存。
2、在运行里输入“CMD ”,进入命令控制台,使用cd 命令转到tomcat 目录下的bin 目录,运行service.bat install 命令,把tomcat 设置为系统启动服务。
3、进入控制面板->管理工具->服务,在服务列表中找到“tomcat xfgl ”一项,双击弹出窗口,把启动类型改为“自动”,确定保存。
三、 设置监控脚本文件新建一个vbs 脚本文件,用于访问tomcat 服务下的一个jsp 页面monitor.jsp 。
脚本代码如下:该脚本的目的是定时访问monitor.jsp 页面,判断页面返回的状态码,若状态不为200,则表示该页面未正常返回,可能是tomcat 服务出了问题,随后自动重启tomcat服务,并记录日志,把日志记录在C盘,日志文件以tomcat服务名和当前日期命名。
使用JCONSOLE远程监控JVM_服务器详细配置
使用JCONSOLE远程监控JVM_服务器详细配置使用JCONSOLE远程监控JVM_服务器详细配置1、确保WLS使用Sun JDK,java -version2、修改WLS配置文件windows修改E:\bea\user_projects\domains\base_domainJMX\bin\setDomainEnv.cmd 添加set MEM_ARGS=-Xms512m -Xmx768m -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false"-Dcom.sun.management.jmxremote.ssl="false"LINUX修改$Domain_HOME/bin/setDomainEnv.sh,为$JAVA_OPTIONS添加-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false3、解决jconsole远程登录用户名密码问题$JAVA_HOME\jre\lib\management目录有个jmxremote.password.template,在最下面两行就可以看到,把前面的#号去掉就生效了weblogic weblogic(用户名密码,可以随意修改)controlRole weblogic(用户名密码,可以随意修改)4、编辑host文件vi /etc/hosts添加#127.0.0.1 localhost localhost.localdomain localhost(先注释)jconsole要访问的ip地址 localhost localhost.localdomain localhost(然后添加这一行)使用hostname -i查看,返回的应该是jconsole要访问的ip地址,也就是weblogic机器的真实IP地址5、启动./$Domain_HOME/bin/startweblogic.sh6、查看9004端口是否启动netstat -an | grep 90047、在本地jdk/bin目录下启动JCONSOLE程序,在窗口中选择“远程”选项卡,输入IP地址端口号:jconsole要访问的ip地址:9004,用户名/密码:weblogic/weblogic。
使用Jconsole对java的内存使用情况(JVM)进行监控
JDK1.5提供JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以执行MBean公开的方法或强制进行垃圾回收。
因为Apusic应用服务器实现标准的JMX接口,因此也可以使用Jconsole 进行监控。
下面是在windows端对Linux的java应用(Resin)的JVM进行监控。
windows:安装jdk1.6.0_06 /javase/downloads/index.jspLinux:Resin2.1.x + jdk1.6启动resin ,增加jvm监控的指令:可以在java启动参数添加,如:httpd.sh 或者wrapper.pl 里面vi http.shargs="***" 把需要启动jvm选项加入。
#指定远程服务器的端口-Dcom.sun.management.jmxremote.port=12345#指定远程服务器的用户认证-Dcom.sun.management.jmxremote.password.file=$JRE_HOME/lib/management/password. properties-Dcom.sun.management.jmxremote.access.file=$JRE_HOME/lib/management/access.prope rties使用密码:#JRE_HOME/lib/management/jmxremote.password.templatecp jmxremote.password.template password.propertieschmod 600 password.properties#默认用户名密码为:monitorRole QEDcontrolRole R&D#默认权限#cp jmxremote.access access.properties#设置权限monitorRole readonlycontrolRole readwrite#也可以使用禁止用户认证com.sun.management.jmxremote.authenticate=false也可以使用ssl连接这里先不用com.sun.management.jmxremote.ssl=false说明:如果没有启动com.sun.management.jmxremote 的配置,远程连接会提示:error during jrmp connection establishment ; nested exception is如果无法连接有可能是linux服务器的hostname存在问题#修改hostname/etc/hosts 把127.0.0.1修改为外网卡IP,如192.168.1.100还有/etc/sysconfig/network#启动resin$RESIN_HOME/bin/http.sh start#查看是否已经启动#ps -x8681 pts/0 S 0:00 perl bin/wrapper.pl -chdir -name httpd -classcom.caucho.server.http.HttpServer -J-server -verbose -Dcom.8683 pts/0 Sl 0:04 /home//jdk1.6.0_06/bin/java -server-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremo #查看端口#netstat -antcp 0 0 127.0.0.1:35844 127.0.0.1:35848 ESTABLISHEDtcp 0 0 :::8080 :::* LISTENtcp 0 0 :::12345 :::* LISTEN-Dcom.sun.management.jmxremote.authenticate=false#是否使用ssl-Dcom.sun.management.jmxremote.ssl=false"windows下jconsole命令在$JAVA_HOME/bin 下cmd:\>jconsole#启动连接远程192.168.1.100:12345 controlRole R&D。
jconsole使用手册
service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxr
mi
点连接就可以进行远程监控了
以上是JMX基本部署,没有涉及到验证方面,如果使用的话,可
能会有漏洞,因为SSL和authenticate设置为false的话,那么
2. 指定连接参数:
远程主机: 服务器的真实IP地址
端口: 1010 ($JAVA_ARGS中-Dcom.sun.management.jmxremote.port指定的端口)
用户名: monitorRole (jmxremote.password中指定的用户名)
密码: your_password(jmxremote.password中设置的密码)
一、Local方式
1、cmd进入dos下,进入到应用程序所在目录,执行语句如下:
java -Dcom.sun.management.jmxremote -jar 程序名.jar
(java -Dcom.sun.management.jmxremote -jar Java2Demo.jar)(测试例子Java2Demo.jar在C:\Program Files\Java\jdk1.6.0_02\demo\jfc\Java2D\)
三
Eden Space (heap): 内存最初从这个线程池分配给大部分对象。
Survivor Space (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。
1、启动tomcat\bin目录下的tomcat6w.exe,在JAVA_OPTS里设
使用jconsole工具来监控java运行情况
使⽤jconsole⼯具来监控java运⾏情况参考:经验证OKjconsole是jdk⾃带的⼯具。
所以要先安装jdk1.jconsole⼯具的路径:通过which jconsole来查看/usr/local/jdk1.7.0_79/bin/jconsole2.使⽤⽅式:在linux监控端的图形界⾯执⾏:/usr/local/jdk1.7.0_79/bin/jconsole将出现图形化java监控和管理控制台。
3.执⾏后出现JConsole新建连接,有两个选择:1.本地进程(可以监控本机的java)——》org.apache.catalina.startup.Bootstartup start2.远程进程(⽤于监控其他主机的java)——》填写需要被监控的主机名:监控端⼝,输⼊监控专⽤的⽤户名/密码(可选)步骤1:需在被监控的主机上修改catalina.sh配置⽂件:vi /opt/tomcat/conf/catalina.sh如不需密码验证,则在第⼆⾏开始添加下⾯3⾏:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"保存退出//“12345”为监控端⼝号如需密码验证,则改为下⾯4⾏:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/usr/local/jdk1.7.0_79/jre/lib/management/jmxremote.password"保存退出步骤2:将/usr/local/jdk1.7.0_79/jre/lib/management/jmxremote.password.template复制⼀份:cp /usr/local/jdk1.7.0_79/jre/lib/management/jmxremote.password.template \/usr/local/jdk1.7.0_79/jre/lib/management/jmxremote.password步骤3:添加⽤于远程监控的⽤户名和密码:vi jmxremote.password //⽤于添加⽤户名和密码monitorRole 12345678 //⽤户名:monitorRole,这个名字系统是预先设置好的admin 123456 //⾃定义了⽤户名:adminroot 123456 //⾃定义了⽤户名:root强制保存退出vi jmxremote.access //⾃定义监控的⽤户名具有哪些权限添加:admin readonly //定义只读帐号,名字任意root readwrite \//定义读写帐号,名字任意create javax.management.monitor.*,javax.management.timer.* \保存退出chmod 600 jmxremote.passwordchown uucp:uucp jmxremote.password //先⽤ls -l /usr/local/jdk1.7.0_79看看是属于哪个⽤户和组,再设置成相同的。
jconsole使用教程?
JConsole 是一个用于监视和管理Java 虚拟机(JVM) 的图形化工具。
下面是一个简单的JConsole 使用教程:1. 启动JConsole: 打开终端或命令提示符窗口,然后在命令行输入"jconsole" 并按Enter 键来启动JConsole。
2. 选择连接的JVM:JConsole 启动后,它会显示一个列表,包含正在运行的JVM 进程。
从列表中选择您想要连接的JVM,并单击"连接"按钮。
3. 监视JVM:当成功连接到JVM 后,JConsole 显示一个主界面,其中包含多个选项卡,用于监视不同方面的JVM。
您可以选择适当的选项卡以查看有关内存、线程、类、GC 等方面的信息。
4. 内存监控:在“内存”选项卡中,您可以查看堆和非堆内存使用情况,以及内存池的详细信息。
您还可以手动执行垃圾回收操作。
5. 线程监控:在“线程”选项卡中,您可以查看当前运行的线程列表,包括线程ID、状态和CPU 使用情况等信息。
6. 类监控:在“类”选项卡中,您可以查看已加载的类的数量和详细信息。
您还可以强制执行类的垃圾收集操作。
7. GC 监控:在“GC”选项卡中,您可以查看JVM 的垃圾回收器的性能统计信息,如垃圾回收频率、暂停时间等。
8. 导出数据:您还可以使用JConsole 导出监视数据以进行后续分析。
在选项卡上右键单击,选择“导出”以导出数据。
请注意,使用JConsole 需要JDK 安装包中提供的工具。
确保您的环境中已正确配置了JDK,并且具有足够的权限来连接并监视JVM 进程。
以上是一个简单的JConsole 使用教程,希望对您有帮助。
使用JConsole 进行JVM 监控需要一定的经验和理解,建议在使用之前查阅更多的资料和文档以更全面地了解其功能和用法。
用jmx监控多台服务器(tomcat)
因为需要写一个后台监控服务器的程序,涉及到jmx,也涉及到分布式的问题,最初在网上找相关资料的时候很少很少,后来才知道其实jmx这一块相关资料已经很多,java网站上已有比较多的完整例子。
最初使用jmx比较简单,安装java官网的例子很快就写出来了几个例子,但在应用中需要结合tomcat来使用,出现了一些问题,比如获取本地的MBeanServer时出错,网上查了些资料发现需要使用tomcat的一些东西,因此该为如下的方式获取MBeanServer即可Java代码1./**2. * 获取本地MBeanServer3. * @return4. */5. private MBeanServer getLocalMBServer(){6. MBeanServer mBeanServer = null;7. if (MBeanServerFactory.findMBeanServer(null).size() > 0) {8. mBeanServer =(MBeanServer) MBeanServerFactory.findMBeanServer(null).get(0);9. } else {10. mBeanServer = MBeanServerFactory.createMBeanServer();11. }12. return mBeanServer;13. }获取远程MBeanServerConnection时则是一个很严重的问题,最初使用如下方法Java代码1.private MBeanServerConnection getRemoteMBConn(){2.// String user = "monitorRole";3.// String pw = "password";4.// String[] credentials = new String[] { user, pw };5.// Map<String, String[]> props = new HashMap<String, String[]>();6.// props.put("jmx.remote.credentials", credentials);7. JMXServiceURL address;8. MBeanServerConnection mbs=null;9. String jmxServerIp=ConfigUtils.getInstance().getOampConfig(OampConstants.JMX_SERVER_IP);//127.0.0.110. String jmxServerPort=ConfigUtils.getInstance().getOampConfig(OampConstants.JMX_SERVER_PORT);//999911. try {12.// address =new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi");13. address =new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+jmxServerIp+":"+jmxServerPort+"/jmxrmi");14. JMXConnector connector = JMXConnectorFactory.connect(address, null);15.// address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi");16.// JMXConnector connector = JMXConnectorFactory.connect(address, props);17. mbs= connector.getMBeanServerConnection();18. connector.connect();19. } catch (Exception e) {20. SrvLogger.error("oamp", ClientMBServerManage.class,"Fail to getRemoteMBConn", e);21. }22. return mbs;23. }在一台机器上时并没有出现啥问题,一切运行正常,当我使用两台机器进行测试的时候则会出现异常,这个异常在网上搜了一下,相关的资料却很少很少,虽然自己也能看到后面具体的错误,Java代码1.ava.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NoInitialContextException: Cannot instantiate class: org.a pache.naming.java.javaURLContextFactory [Root exception is java .lang.ClassNotFoundException: org.apache.naming.java.javaURLCon textFactory]这个异常在tomcat启动完成之后,再获取链接则会抛出此异常,不知该咋解决呢,后来想到用rmi的另外一种地址形式,但还是不行,因为都走的是同一个思路。
JConsole 远程监控Tomcat服务
JConsole 远程监控Tomcat服务1、概述JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。
如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。
JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。
其实在 JDK 5 中已经新加入了这个功能了. 现在的 JDK 已经内置了对 VM 的监控功能. JDK 6 中这个工具变的更加好用了. 关于 JDK 5 中如何使用这个工具可以参考这里: /developer/technicalArticles/J2SE/jconsole.html/j2se/1.5.0/docs/guide/management/jconsole.html2、环境配置1、环境服务器:CentOS 5 + JDK6 + Tomcat6ip地址:192.168.1.101客户机:Windows + JDK 62、配置●修改java虚拟机启动参数在%TOMCAT_HOME%\bin\catalina.sh文件中将JAVA_OPTS=”-Xms256m -Xmx512m -XX:MaxPermSize=128m”修改为:JAVA_OPTS=”-Xms256m -Xmx512m -XX:MaxPermSize=128m-Dcom.sun.management.jmxremote.port=1090-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false”注意:1090表示监控的端口号,确保指定的端口不被占用;可以采用netstat -an来查看已经占用的端口;配合lsof -i:portnum 来查看占用端口的具体应用程序;另外如果开启了防火墙服务,请确保端口能够透过防火墙访问;●启动Tomcat服务器./catalina.sh run&●连接远程虚拟机启动%JAVA_HOME%\bin目录下的jconsole,弹出对话框器的运行情况了。
loadrunner监控tomcat
通过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安装目录的"jre6"lib"management目录,把jmxremote.password.template 文件改名为jmxremote.password,去掉最后两行的注释(用户名和密码):monitorRole QEDcontrolRole R&D确保jmxremote.access文件末尾的访问角色没有被注释掉:monitorRole readonlycontrolRole readwrite "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中可配置)。
JConsole地使用方法 JProfiler监控使用
JConsole的使用方法 JProfiler监控使用1.首先什么都不用装哦,只要你本机有jdk,作为java 人,我们不可能没有吧,哈哈哈2.echo $JAVA_HOME,找出java安装路径3.自己寻觅一个路径mkdir jcon_pwd,我们暂时命名为$your_path/jcon_pwd4.执行cp$JAVA_HOME/jre/lib/management/jmxremote.pwd.templat e $your_path/jcon_pwd/jmxremote.pwd 5.vi jmxremote.pwd,修改monitorRole *****(your password)6.在env.sh文件中的JAVA_OPTS参数中,加入:-Dcom.sun.management.jmxremote.port=9999-Dcom.sun.management.jmxremote.pwd.file=/home/zhao/ brmms/deploy/bin/jcon_pwd/jmxremote.pwd-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false 注意port=9999,要是一个没有人使用的端口。
7.执行hostname -i ,如果显示的是127.0.0.1,需要修改/etc/hosts文件#127.0.0.1 localhost localhost.localdomain localhost <server ip> localhost localhost.localdomain localhost 8. 检查 vi/etc/sysconfig/network NETWORKING=yes HOSTNAME=主机名 //在这里可以修改主机名 9.启动jbossserver,./startws.sh -d<serverip> stat -na|grep <listenport>, 如 netstat -na |grep 9999 查看后为listen状态 11.打开客户端%JAVA_HOME%/bin,双击打开jconsole.exe-------------------------------------------华丽的分割线----------------------------------------- 12.指定连接参数:远程主机: 服务器的真实IP地址端口: port($JAVA_OPTIONS中-Dcom.sun.management.jmxremote.port指定的端口)用户名:monitorRole密码:your password(jmxremote.pwd中设置的密码) 13. 点击“连接”,OK~~ 经过上述13步~你就可以通过jdk的自带工具,对服务器端jvm的各项参数进行监控啦~~相当滴直观~~呵呵JConsoleJConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。
使用JVisualVM远程监控Tomcat
使用JVisualVM远程监控Tomcat用JVisualVM连接远程JVM,监控系统运行性能参数。
作用:JVM和监控的应用程序运行在不同的服务器上,减轻应用程序的负担,特别是HeapDupm的时候,应用常能够续负担很大。
1. 为服务器上的tomcat 配置jvm 启动参数。
在tomcat 的catalina.bat 中添加如下参数:set JAVA_OPTS=-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port="9004"-Dcom.sun.management.jmxremote.authenticate="false"-Dcom.sun.management.jmxremote.ssl="false"其中-Dcom.sun.management.jmxremote.port=9004 指定了JMX 启动的代理端口;这个端口就是Visual VM 要连接的端口其中-Dcom.sun.management.jmxremote.ssl ="false" 指定了JMX 是否启用ssl其中-Dcom.sun.management.jmxremote.authenticate =”false”指定了JMX 是否启用鉴权(需要用户名,密码鉴权)2 运行JVisualVM,选中左边的Remote节点,右键点击Add Remote Host弹出对话框3 填写远程的Tomcat的主机IP,点击OK4 在左侧的Remote节点下面增加了刚才添加的节点。
选中10.87.40.141这个节点,右键弹出菜单选择“Add JMX Connetcion..”.5 在弹出的对话框的填写要连接的Tomcat所在的主机IP和端口,端口是在Catalina.bat设置的端口9004,点击OK。
通过jconsole查看tomcat运行情况的配置方法—基于JDK6.0、Linux(Redhat5
通过jconsole查看tomcat运行情况的配置方法——基于JDK6.0、Linux(Redhat5.5)、Tomcat7由于项目的原因,需要使用jconsole对tomcat进行远程监控,结合网上的资料对配置方法进行了总结。
第一步、配置tomcat打开%TOMCAT_HOME%/bin下的文件catalina.sh,搜索“JA V A_OPTS”找到下面这行:在每个“JA V A_OPTS”后边都添加以下标黄代码段,且在一行显示:if [ -z "$LOGGING_MANAGER" ]; thenJAVA_OPTS="$JAVA_OPTS-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.rmi.server.hostname=192.168.4.7-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port="9004"-Dcom.sun.management.jmxremote.authenticate="false"-Dcom.sun.management.jmxremote.ssl="false""elseJAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER-Djava.rmi.server.hostname=192.168.4.7-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port="9004"-Dcom.sun.management.jmxremote.authenticate="false"-Dcom.sun.management.jmxremote.ssl="false""fi其中-Djava.rmi.server.hostname项必须设置,否则远程连接会因为解析到127.0.0.1失败,该项的值就是你在windows客户端连接linux时的ip地址-Dcom.sun.management.jmxremote.port="9004"项设置远程连接端口,不要与其他应用冲突ssl和authenticate设置为false,如果需要安全,请不要false第二步、重启tomcat[root@test ~]#ps –ef |grep tomcat –-输入命令查看是否存在tomcat进程[root@test ~]#./shutdown.sh--停止tomcat服务,如果无效使用kill命令杀掉进程[root@test ~]#./startup.sh --启动tomcat服务第三步、运行jconsole进入JDK安装目录%JDK_HOME%/bin下,找到“jconsole.exe”,点击运行并选择【远程】选项卡:在【主机名或ip】输入要远程监控的tomcat服务器地址在【端口】输入上文设置的端口号:9004【用户名、口令】为空,点击【连接】进入监控界面:。
课题=通过jconsole监控tomcat JVM 内存、线程、CPU
通过jconsole监控tomcat JVM 内存、线程、CPU
从Java 5开始引入了JConsole,来监控Java 应用程序性能和跟踪Java 中的代码。
jconsole是JDK自带监控工具,只需要找到JDK 安装路径,打开bin 文件夹,双击jconsole即可。
0、监控前的准备
将代码写入tomcat/bin/catalina.sh
CATALINA_OPTS=-Djava.awt.headless=true
JAVA_OPTS="-Djava.rmi.server.hostname=192.168.0.1 $JAVA_OPTS =$PROGNAME
-Dcom.sun.management.jmxremote.port=8533 -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"
1、建立新连接
这里只谈远程监控Linux tomcat ,根据用法输入:
192.168.0.1:8533
点击“连接”进入控制台
敏捷测试团队,不再仅仅是在coding之后。
而是和研发人员贯穿在需求分析、规格说明、自动化单元测试、自动化验收测试、静态代码分析、技术债等环节中。
所以敏捷项目必定在将来效率的趋势下成为主流。
Jconsole使用手册
jmxremote.password • 打开jmxremote.password文件,添加用户名密码,如:sunyard
sunyard。 • 打开jmxremote.access文件,为添加的用户授权,如:sunyard
• 找到set MEM_ARGS=-Xms256m –Xmx512m • 修改为:
• set MEM_ARGS=-Xms256m –Xmx512m
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port="9090" Dcom.sun.management.jmxremote.authenticate=“false" Dcom.sun.management.jmxremote.ssl="false"
jConsole简介
• jConsole是一个JMX兼容的监视工具。它使用Java虚拟机的JMX机制 来提供运行在Java平台的应用程序的性能与资源耗费信息。其监控内 容包括:内存、线程、类、CPU使用等。
• 通过监控信息,可以很清晰的了解到当前程序是否运行正常:如内存 泄露、死锁、类加载异常等。
jConsole使用
startWebLogic.cmd 文件 • 添加以下语句: • set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%
-Dcom.sun.management.jmxremote • 方法二:如图在快捷方式中进行添加:
• 远程连接设置
• 打开bea\user_projects\domains\base_domain\bin\ setDomainEnv.cmd 文件
Tomcat远程监控配置
TONCAT远程监控配置TOMCAT免安装版说明:本TOMCAT监控是利用JDK 工具JConsole 远程监控Tomcat服务,JDK基于1.5及以上版本。
1.配置tomcatWindow下:修改startup.bat,在"%OS%" == "Windows_NT" setlocal注释后增加:set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote=true -Dcom.s un.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.ssl= false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.se rver.hostname=192.168.95.3其中:-Dcom.sun.management.jmxremote=true 表示启用远程监控-Dcom.sun.management.jmxremote.port=9998(不要和tomcat的端口一样) 表示监控端口为9998(可自行配置)-Dcom.sun.management.jmxremote.ssl=false 表示是否启用SSL-Dcom.sun.management.jmxremote.authenticate=false表示是否配置访问密码默认false-Djava.rmi.server.hostname=172.25.0.32 表示监控服务器的IP Linux下:修改startup.sh,export JAVA_OPTS=$JAVA_OPTS -Dcom.sun.management.jmxremote=true -Dcom .sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.ss l=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi. server.hostname=192.168.95.32.监控配置进行C:\Program Files\Java\jdk1.6.0_45\bin 找到jconsole.exe,双击打开进行后:1.配置tomcat找到如上图所示文件,打开,在Java Options中输入2.监控配置如上。
jvm监控工具汇总
下载之后解压缩得到以下目录结构:Shell代码配置好两个环境变量之后就可以运行jvmstat 了,运行命令为:Shell代码Java代码选择本地监控还是远程监控。
进入监控界面后,会有一些基本选项可以选择,例如内存,线程,类等。
选择内存选项后会显示堆与非堆内存等使用情况。
概述选项:监控JVM和一些监控变量的信息。
内存选项:内存使用信息线程选项:线程使用信息类选项:类调用信息VM摘要:JVM的信息MBean选项:所有MBean 的信息MBean 展示了所有以一般形式注册到JVM 上的MBean 。
MBean 允许你获取所有的平台信息,包括那些不能从其他标签页获取到的信息。
注意,其他标签页上的一些信息也在MBean 这里显示。
另外,你可以使用MBean 标签管理你自己的应用的MBean。
评论:与jvmstat 相比jconsole 就要强大的多了,从jconsole 中可以不光光监控到内存情况,还可以监控例如:线程,类,JVM参数等等高级信息。
jconsole 还可以根据内存等使用情况手动执行GC 清理,这给我们的程序监控与良好运行带来了很大的便利。
值得注意的是jconsole可以同时监控多个JVM 进程,在jconsole 中可以轻松的切换监控界面。
Java代码通过起始页的提示进入相应的学习文档页面,里面有丰富的教程及讲解,并且都是中文的!应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的CPU、Heap、PermGen、类、线程的统计信息,如图所示:概述选项监控选项线程选项"远程"列表下列出远程主机上的Java 程序的资源占用情况,但需要在远程主机上运行jstatd 守护程序更多的应用及用法可以参照官方文档:/zh_CN/gettingstarted.html?Java_VisualVM评论:VisualVM 较JConsole 又强大了不少,其中又增加了许多功能与信息,通过VisualVM 可以更加直观的观察各种内容的详细信息。
监控tomcat的几种方法
Tomcat 监控方法方法1:.使用tomcat自带的status页具体方法:步骤1:修改%tomcat安装路径%\conf \tomcat-users文件,配置admin设置权限。
在步骤2:完成后,启动tomcat,输入:http://localhost:8080--(IP,端口号,可远程访问)点击status,输入账号,密码(manager,1234),进入status,时时刷新页面,查看当前tomcat 状态。
或者直接访问:http://localhost:8080/manager/status页面。
备注1:若希望整个服务器的性能数据以一个单行的xml文件形式表示,则进入如下界面:http://localhost:8080/manager/status?XML=true备注2:若服务器中存在几个项目,单独对某个项目进行监控,则需要另行增加代码。
步骤3:上面得到的只是当前情况下的性能数据,要获得一个阶段的性能数据,必须设定采样频率,定时读取,将数据汇总并分析。
步骤4:对得到的数据得出图表。
参考以下示例:通过Linux自带的Bash来实现,绘制图表采用的是Gnuplot。
下列代码生成html的报表只是方法2:使用JDK自带工具,Jconsole具体方法:步骤1:.编辑%tomcat安装路径%\bin\catalina.bat文件。
添加下列内容:set JAVA_OPTS= -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=10004-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false步骤2:启动tomcat,进入JDK安装路径\jdk1.5.0_22\bin 下双击打开Jconsole文件,显示Jconsole连接页面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JConsole 远程监控Tomcat服务1、概述JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。
如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。
JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。
其实在 JDK 5 中已经新加入了这个功能了. 现在的 JDK 已经内置了对 VM 的监控功能. JDK 6 中这个工具变的更加好用了. 关于 JDK 5 中如何使用这个工具可以参考这里: /developer/technicalArticles/J2SE/jconsole.html/j2se/1.5.0/docs/guide/management/jconsole.html2、环境配置1、环境服务器:CentOS 5 + JDK6 + Tomcat6ip地址:192.168.1.101客户机:Windows + JDK 62、配置●修改java虚拟机启动参数在%TOMCAT_HOME%\bin\catalina.sh文件中将JAVA_OPTS=”-Xms256m -Xmx512m -XX:MaxPermSize=128m”修改为:JAVA_OPTS=”-Xms256m -Xmx512m -XX:MaxPermSize=128m-Dcom.sun.management.jmxremote.port=1090-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false”注意:1090表示监控的端口号,确保指定的端口不被占用;可以采用netstat -an来查看已经占用的端口;配合lsof -i:portnum 来查看占用端口的具体应用程序;另外如果开启了防火墙服务,请确保端口能够透过防火墙访问;●启动Tomcat服务器./catalina.sh run&●连接远程虚拟机启动%JAVA_HOME%\bin目录下的jconsole,弹出对话框器的运行情况了。
当JConsole成功建立连接,它从连接上的JMX代理处获取信息,并且以下面几个标签页呈现信息。
∙概述:监控JVM和一些监控变量的信息。
∙内在:内存使用信息∙线程:线程使用信息∙类:类调用信息∙VM 概要: JVM的信息∙MBean:所有MBeans的信息MBean 标签页展示了所有以一般形式注册到JVM上的MBeans。
MBeans tab允许你获取所有的平台信息,包括那些不能从其他标签页获取到的信息。
注意,其他标签页上的一些信息也在MBeans这里显示。
另外,你可以使用 MBeans标签管理你自己的应用的MBeans3、使用MBean标签监控和管理MBean注册到JMX代理的平台或者应用的MBeans,可以通过MBeans标签获取。
例如,内存的MBeans如下面定义public interface MemoryMXBean {public MemoryUsage getHeapMemoryUsage();public MemoryUsage getNonHeapMemoryUsage();public int getObjectPendingFinalizationCount();public boolean isVerbose();public void setVerbose(boolean value);public void gc();}内存的MBean包括四个属性:∙HeapMemoryUsage.用于描述当前堆内存使用情况的只读属性∙NonHeapMemoryUsage.用于描述当前的非堆内存的使用情况的只读属性∙ObjectPendingFinalizationCount.用于描述有多少对象被挂起以便回收。
∙Verbose.用于动态设置GC是否跟着详细的堆栈信息,为一个布尔变量内存的MBean支持一个操作——GC,此操作可以发送进行实时的垃圾回收请求图3: MBean 标签左边的树形结构以名字的方式展示了所有MBeans的列表。
一个MBean对象的名字由一个域的名字和一串关键字属性组成。
例如,JVM的平台的MBeans是在“ng”域下的一组,而日志的MBeans则在"java.util.logging"域下。
MBean对象的名字在javax.management.ObjectName规范中定义。
当你在树中选中一个MBean,属性,操作,或者通知等一些信息会再右边显示出来。
如果属性是可写的(属性被标志为蓝色),你可以进行设置。
图4: MBean 操作你可以操作在”操作”节点中列出的操作。
图5: MBean 通知你也可以看到由MBean发送出来的通知:默认情况,如果你不订阅通知的话,JConsole不会收到MBean发生过来的通知。
你可以点击"订阅"按钮来堆通知进行定义,而使用"末订阅"按钮来取消订阅4、监控内存内存标签页通过读取内存系统、内存池、垃圾回收的MBean来获取对内存消耗、内存池、垃圾回收的情况的统计。
图 6:上图展示了内存随时间变化的使用情况。
有对堆的、非堆的以及特殊内存池的统计。
内存池信息是否能被获取,取决与使用的Java虚拟机。
下面列表展示了HotSpot虚拟机的内存池情况。
内存池“Eden Space ”(heap):内存最初从这个线程池分配给大部分对象。
内存池“Survivor Space” (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
内存池“Tenured Generation” (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。
内存池“Perm Generation” (non-heap):保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。
Java虚拟机共享这些类数据。
这个区域被分割为只读的和只写的内存池“Code Cache”(non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)详细信息区域给出一些当前线程的信息:已使用:当前的内存使用量。
使用的内存包括所有对象(能被获取和不能被获取的)所占用的内存。
分配:Java虚拟机保证能够获取到的内存量。
分配内存(committed memory)的量可能随时间改变。
Java虚拟机可能释放部分这里的内存给系统,相应的分配的内存这时可能少于初始化时分配的给它的量。
分配量总数大于或等于已使用的内存量。
最大值:内存管理系统可以使用的最大内存量。
这个值可以被改变或者不做设定。
如果JVM 试图增加使用的内存到大于分配量(committed memory)的情况,内存分配可能失败,即便想使用的内存量小于或者等于最大值(如:系统虚拟内存比较低时)GC 时间 :垃圾回收使用的总时间和调用垃圾回收的次数。
它可能有好几行,每行代表JVM 使用的垃圾回收算法。
Usage Threshold The usage threshold of a memory pool. This field will only beshown if the memory pool supports usage threshold.右下角的棒状图表显示了被JVM的内存池消耗的内存。
如果内存使用超过 usage threshold,则棒会变红。
usagethreshold是用于支持内存检查的Memory Pool MBean的一个属性。
MemoryPoolMXBean定义了一系列方法用于检查内存。
public interface MemoryPoolMXBean {// Usage thresholdpublic long getUsageThreshold();public void setUsageThreshold(long threshold);public boolean isUsageThresholdExceeded();public boolean isUsageThresholdSupported();// Collection usage thresholdpublic long getCollectionUsageThreshold();public void setCollectionUsageThreshold(long threshold);public boolean isCollectionUsageThresholdSupported();public boolean isCollectionUsageThresholdExceeded();}每种内存池可能有两种内存初始话支持: usage threshold和collection usage threshold 特殊的内存池可能两种都不支持。
Usage Thresholdusage threshold是内存池中一个可管理的属性。
它使用低负荷的内存监控。
设置usage threshold为正值则usage threshold检查内存池。
设置usage threshold为零,则关闭检查。
默认值由JVM设置。
JVM一般让usage threshold在最合适的时候检查内存,典型的在GC的过程中和某些分配内存的时候。
如果JVM发现当前的内存使用超过了usage threshold,它将会把UsageThresholdExceeded属性设置为true有些内存池可能不支持usage threshold。
你可以使用UsageThresholdSupported属性来判断一个内存池是否支持usage threshold。
例如,一个比较完善(generational garbage collector)的垃圾回收器(如HotSpot的虚拟机),most of the objects are allocated in the young generation,从eden内存池中产生。
eden pool被设计成可以被装满;再eden pool中执行垃圾回收将会释放他Collection Usage ThresholdCollection usage threshold是可进行垃圾回收的内存池的一个可配置属性。