Java VisualVM 远程连接(按照第7点配置tomcat即可)


 

一.Java VisualVM 概述


  对于使用命令行远程监控jvm 太麻烦  jdk1.6 中 Oracle 提供了一个新的可视化的。 JVM 监控工具 Java VisualVM jvisualvm.exe JDK 的 bin 目录下。

 

   双击启动 Java VisualVM 后可以看到窗口左侧 “应用程序 ”栏中有“ 本地 ”、“远程  、“快照 ”三个项目。

 

  “本地 ”下显示的是在 localhost 运行的 Java 程序的资源占用情况,如果本地有 Java 程序在运行的话启动 Java VisualVM 即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的 CPU 、 Heap 、 PermGen 、类、线程的 统计信息。


  “远程” 项下列出的远程主机上的 Java 程序的资源占用情况,但需要在远程主机上运行 jstatd 守护程序

 


VisualVM分为 3 类, 本地 它会自动侦测到,并显示出来

双击Local 下的任一节点,看到右边的变化 ,你可以监控 CPU ,内存,类,线程等运行状况,实时监控服务器性能。

 


 右键 VisualVM我们可以看到 Thread Dump, Heap Dump

 做 Thread Dump 很快,马上就可以看到结果

 

 

Heap Dump要稍花费一些时间(可以看到当前 heap 里对象的数量及占用的比例,做 OOM 很好用)

 

 

 

对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用 VisualVM 远程监控。


二.使用visualvm 远程监控 JVM  

1. 测试环境

Ubuntu Server 10.01

 

2.  在服务器上安装 jstatd 组件

使用apt-get 命令安装 openjdk 即可 :

 

Java代码    收藏代码
  1. sudo apt-get install openjdk-6-jdk  

 

3. 在服务器上配置 jstatd 的 security policy 文件

   jstatd是一个监控 JVM 从创建到销毁过程中资源占用情况并提供远程监控接口的 RMI ( Remote Method Invocation ,远程方法调用)服务器程序,它是一个 Daemon 程序,要保证远程监控软件连接到本地的话需要 jstatd 始终保持运行。 

   jstatd运行需要通过 -J-Djava.security.policy=*** 指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy ,文件内容如下:

 

Java代码    收藏代码
  1. grant codebase "file:${java.home}/../lib/tools.jar" {  
  2.    permission java.security.AllPermission;  
  3. };  

 

 

4. 修改服务器 hosts 文件中的 IP 地址

 

   要使Java VisualVM 成功连接到远程服务器上,服务器端应该在 /etc/hosts 文件中把本机地址设为本机的 IP 地址。使用 hostname -i 命令查看,如果显示的是 127.0.0.1 或者与本机实际 IP 不一致的话,需要把 /etc/hosts 文件中相应的地址改为本机实际 IP 。

 

5. 运行 jstatd 守护程序

 

  由于 jstatd 需要保持一直运行,所以建议使用 screen 命令执行 jstatd 程序,命令如下:

Java代码    收藏代码
  1. screen jstatd -J-Djava.security.policy=jstatd.all.policy  

 

如果需要RMI 日志功能的话,还可以在启动参数中加入 -J-Djava.rmi.server.logCalls=true 。

Java代码    收藏代码
  1. screen jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true  

 

 

jstatd开始运行后,使用 CTRL+A+D 断开 screen 界面,回到 shell 界面。如果想切换回 jstatd 运行界面的话,使用 screen -r -d命令即可。

 

6. 通过Java VisualVM 连接到服务器监控 Java 程序

   在Java VisualVM 程序窗口左侧  远程  项目右键选择  添加远程主机  ,在弹出的对话框中输入远程主机的 IP 地址,确认提交后即可看到相应的远程主机和在上面运行的 Java 程序,连接成功后应该会显示 Jstatd 及其 PID 。

 

 

  通过以上方式连接服务器发现一个问题,不能监控CPU 。提示我们建立 JMX ,建立 JMX 提示要求端口号。( JMX:Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。 JMX 可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用 。而Visual VM是通过 JMX 来和远程 Java 应用联系的 )。

 

 

7. T omcat中配置

  下面我们为54 服务器的 tomcat 配置 jvm 启动参数。  tomcat 的 catalina.sh 中添加如下参数:

Java代码    收藏代码
  1. JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'   

 

或:

Java代码    收藏代码
  1. JAVA_OPTS=’-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.1.54  其他配置’  

 

 

 

注:1. -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用

2. -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl

3. -Dcom.sun.management.jmxremote.authenticate=false   指定了JMX 是否启用鉴权(需要用户名,密码鉴权)

   2,3两个是固定配置,是 JMX 的远程服务权限的

4. -Djava.rmi.server.hostname :这个是配置 server  IP 

 

 

连接成功,现在我们可以远程监控服务器性能,可以配合 jmeter 进行了一个长时间的加压,在加压过程中重点关注了系统资源的使用情况。

Tomcat连接池是**从Tomcat 7版本开始引入的一个高性能的数据库连接池**。下面将具体介绍查看Tomcat连接池的方法: 1. **通过配置文件查看:** - Tomcat的数据源可以在`context.xml`或`server.xml`文件中进行配置,通过查看这些文件可以获得连接池的设置信息。 - 在虚拟主机的配置文件中,也可能对连接池进行了特定的设置,这同样需要检查以获取完整的配置信息。 2. **通过管理页面查看:** - 如果启用了Tomcat的管理页面,可以通过访问`http://localhost:8080/manager/status`来查看服务器的状态,包括连接池信息。 - Tomcat管理页面提供的连接池信息可能包括:当前活跃的连接数、空闲的连接数等。 3. **通过JMX查看:** - Tomcat 提供了一个JMX(Java Management Extensions)接口,可以远程监控和管理Tomcat的各项参数,包括连接池状态。 - 使用支持JMX的工具如JConsole或VisualVM等,可以连接Tomcat的JMX接口,实时查看和调整连接池的配置。 4. **通过日志文件查看:** - Tomcat的日志文件(通常是`catalina.out`)可能会记录与连接池相关的信息,例如连接的打开和关闭。 - 通过分析日志文件,可以了解连接池在实际运行中的行为模式及可能存在的问题。 5. **通过命令行工具查看:** - 可以使用操作系统提供的命令行工具,如Linux的`ps`或`netstat`命令,来查看Tomcat进程的网络连接情况。 - 这类工具虽然不直接显示连接池的状态,但可以间接反映连接池的使用情况。 6. **第三方监控工具:** - 市面上有许多第三方的应用服务器监控工具,如New Relic、AppDynamics等,它们提供了更全面的监控能力,包括对连接池的监控。 - 这些工具通常提供图形化界面,帮助用户更直观地理解连接池的使用情况和性能指标。 7. **编写简单的测试程序:** - 可以通过编写简单的Java程序,使用JNDI查找数据源,并打印出连接池的相关属性和当前状态。 - 这种方法可以灵活地获取和展示连接池的信息,便于开发人员进行调试和分析。 此外,在了解以上内容后,以下还有一些其他建议: - 在使用连接池时,需要注意合理设置连接池的大小和其他参数,以适应不同的应用需求和负载情况。 - 定期检查连接池的健康状态,例如是否有泄漏的连接或者连接是否得到有效的复用。 - 考虑使用连接池自带的监控功能或集成第三方监控工具,以便更好地监控和管理连接池。 总的来说,查看Tomcat连接池的方法主要包括通过配置文件、管理页面、JMX、日志文件、命令行工具、第三方监控工具以及编写简单的测试程序等方式。每种方法都有其特和适用场景,用户可以根据自己的需求和环境选择合适的方法来进行查看。同时,合理配置和维护连接池对于保证应用的稳定性和性能是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值