- 浏览: 148965 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (119)
- ibatis (7)
- oracle (14)
- struts (4)
- js (11)
- web (6)
- java基础 (16)
- jstl (1)
- use (2)
- log4J (1)
- Json (2)
- jxl (5)
- server (1)
- spring (4)
- jquery (8)
- struts2 (1)
- AjaxAnywhere (1)
- extjs (1)
- hibernate (1)
- other (3)
- tld (1)
- jms (2)
- lib (0)
- 应用 (1)
- web前端 (2)
- linux (2)
- jvm (9)
- 缓存 (1)
- spring mvc (1)
- ftp (1)
- ide (1)
最新评论
一.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即可:
3.在服务器上配置jstatd的security policy文件
jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMI(Remote Method Invocation,远程方法调用)服务器程序,它是一个Daemon程序,要保证远程监控软件连接到本地的话需要jstatd始终保持运行。
jstatd运行需要通过-J-Djava.security.policy=***指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy,文件内容如下:
- grant codebase "file:${java.home}/../lib/tools.jar" {
- permission java.security.AllPermission;
- };
4.修改服务器hosts文件中的IP地址
要使Java VisualVM成功连接到远程服务器上,服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看,如果显示的是127.0.0.1或者与本机实际IP不一致的话,需要把/etc/hosts文件中相应的地址改为本机实际IP。
5.运行jstatd守护程序
由于jstatd需要保持一直运行,所以建议使用screen命令执行jstatd程序,命令如下:
如果需要RMI日志功能的话,还可以在启动参数中加入-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.Tomcat中配置
下面我们为54服务器的tomcat配置jvm启动参数。在tomcat的catalina.sh中添加如下参数:
- JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'
或:
- 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进行了一个长时间的加压,在加压过程中重点关注了系统资源的使用情况。
三.参考博客
http://mahuihuang.blog.163.com/blog/static/745292520113202321494/
http://wolfdream.iteye.com/blog/1032712
http://sjsky.iteye.com/blog/705323
发表评论
-
instanceof, isinstance,isAssignableFrom的区别
2014-03-17 10:47 593instanceof运算符 只被用于对象引用变量,检查 ... -
Java中RegExp正则表达式使用详解
2014-03-13 18:42 1420如果你曾经用过Perl或 ... -
java 通过反射获取泛型的类型
2014-03-11 12:28 897jdk1.5开始支持泛型,所以我们有时需要把泛型里定义的对 ... -
Java 校验方法
2011-08-06 16:34 860//=====================判断时间是否正确 ... -
ftp实现上传下载,解决了编码问题
2011-05-25 13:12 3339很多人都碰到ftp的上 ... -
java 实现ftp上传下载
2011-05-25 12:17 1260package my.base; import java ... -
java中replace和replaceAll的区别
2011-05-12 09:50 6081)replace的参数是char和CharSequence, ... -
集合和数组相互转换
2011-04-28 10:40 1787数组和List、set都可以存放多个元素,数组的特点是长度固定 ... -
ConcurrentHashMap之实现细节
2011-04-22 17:57 723ConcurrentHashMap是Java 5中支持高并发、 ... -
Map、Set、Iterator迭代详解与Java平台的集合框架
2011-04-22 15:45 1079Map、Set、Iterator迭代详解 Map接口定义了四 ... -
把值存放在application中的方法
2011-04-18 14:18 5391.在servlet中的方法。 Servle ... -
java数据格式化
2011-04-12 14:39 1156java的数据格式化 java.text 包允许通过与特定 ... -
清空所有的session
2011-04-08 17:56 872清空session的方法,常用来注销的时候清空所有的ses ... -
java.util.Map接口的实现类的区别
2011-01-25 10:08 1333java为数据结构中的映射定义了一个接口java.util. ... -
一个list的填充类
2010-08-15 16:36 944public void test2For(){ List ...
相关推荐
JVM性能调优是Java开发中至关重要的一环,它直接影响应用程序的运行效率和稳定性。jstat(JVM Statistics Monitoring ...在实际工作中,结合JVisualVM、JConsole等可视化工具,可以更全面地分析和调优Java应用的性能。
在实际调优过程中,我们需要结合`jstat`、`jmap`、`jconsole`、`jvisualvm`等工具,进行多维度的监控和分析。例如,如果发现频繁的Minor GC导致应用暂停时间过长,可以尝试增大新生代的大小;如果老年代空间不足引发...
5. 使用工具(如jstat、jvisualvm、jprofiler、arthas、top等)进行内存分析,调整堆空间比例或垃圾收集器配置。 在生产环境中,当发生OOM时,需首先复现问题,然后使用上述工具进行诊断,以便找到根本原因并采取...
- 了解JVM故障排查工具,如jmap、jstat、jvisualvm等。 通过深入学习以上知识点,并结合实际面试经验,可以有效提高Java面试的成功率,为在BAT或其他知名公司赢得一席之地做好充分准备。同时,不断实践和项目经验...
此外,还可以通过JVM提供的监控工具来观察垃圾回收的情况,例如使用jstat、jvisualvm等工具。 以下是一个简单的Java程序示例,演示如何创建对象并触发垃圾回收: ```java public class GarbageCollectionDemo{ //...
本文将详细介绍 JDK 自带的几个核心 VM 分析工具:jps、jstat、jmap 和 jconsole,并探讨它们各自的功能及应用场景。 #### jps - 查看运行中的 Java 进程 **jps** 类似于 Unix/Linux 系统中的 `ps` 命令,用于列出...
它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。 可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时它还支持在...
2. jvisualvm:是一个更为全面的监控和故障排查工具,支持多种插件,可以查看本地和远程JVM的详细性能和资源使用情况。 3. GC日志:记录了垃圾收集事件的详细信息,有助于分析垃圾收集器的行为和性能。 文档还提到...
- **JVM调优**:通过JDK工具如jmap、jstat、jvisualvm进行性能监控与优化。 - **内存泄漏与内存溢出**:分析原因及解决策略。 3. **多线程** - **线程创建方式**:实现Runnable、Thread,以及线程池的使用。 - ...
本文将详细介绍几个常用的JVM性能监控工具及其功能,包括Jinfo、Jstat、Jmap和Jstack。 1. **Jinfo**: Jinfo是一款用于查看和修改Java进程配置参数的命令行工具。它可以帮助开发者了解正在运行的Java应用程序的...
其命令格式为 `jstat [option] [vmid] [interval] [count]`,其中interval和count参数分别表示查询间隔和次数。 3. JINFO(Configuration Info for Java) JINFO工具主要用于查看和调整Java虚拟机的各项参数。如果...
jconsole和jvisualvm是Java提供的图形化监控工具,可以监控虚拟机的运行状态、内存使用、线程运行情况等。它们为非命令行用户提供了直观的操作界面,可以方便地进行各种监控和诊断操作。 以上这些JVM命令工具是Java...
在解决问题后,通过jstat观察GC性能改善,Old区内存释放正常,同时使用jvisualvm.exe工具监测内存堆使用,确认内存不再持续增长,而是保持正常波动。此外,进行了8小时的稳定性测试,服务器交易表现平稳。 总结来说...
7. **jstat**: jstat 提供了GC和类装载的统计信息,用于实时监控JVM的状态。例如,`jstat -gcutil process_id`可以显示垃圾收集的利用率。 8. **jvisualvm**: jvisualvm 是一个集成的GUI工具,用于分析运行中的应用...
VisualVM整合了多个JDK命令行工具的功能,如`jstat`、`JConsole`、`jstack`、`jmap`和`jinfo`,使得开发者无需记住复杂的命令行选项即可进行性能调试。 VisualVM支持的主要功能包括但不限于: - **生成和分析数据**...
它集成了多种原本独立存在的命令行工具,如`jstat`, `JConsole`, `jstack`, `jmap`, 和 `jinfo`,并通过一个统一的图形用户界面(GUI)提供了更加直观的使用体验。 - **核心功能**: - **监视**:监控Java应用程序...
`jstat`工具则可以提供虚拟机(VM)的各种统计信息,如垃圾收集(GC)的状态和性能数据。通过`jstat -gc`参数,我们可以获取关于GC的详细信息,包括年轻代和老年代的内存使用情况。 `jmap`是另一个强大的工具,它...
Java进程cpu占用过高问题解决是指Java进程中cpu占用率过高的问题,导致了系统性能下降和服务器崩溃。解决这个问题需要了解Java进程的cpu占用率的原因,并采取相应的措施来解决。 cpu占用率过高的原因: 1、Java ...
1. **JVM内置工具**:Java虚拟机(JVM)提供了多种内置的诊断工具,如`jps`(Java进程状态工具)、`jstat`(Java统计监视工具)、`jinfo`(配置信息工具)、`jmap`(映射工具)、`jhat`(堆分析工具)和`jstack`...