1、 JMX方式(jconsole也可通过此方式进行连接)
  jmx方式能监控到CPU信息,但无法使用visualVM的visualVM GC插件
 
   jmx无密码方式
监控普通的java进程

. 设置hostname
在/etc/hosts中添加hostname解析,解析地址可以不是外网ip(可通过hostname命令查看hostname是多少)
. 启动时添加参数
如:
java -Djava.rmi.server.hostname=xxx.xxx.xxx -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Hello
其中xxx.xxx.xxx为本机外网ip,22334为提供jmx访问的端口,可自己指定
如果没有配置hostname解析可能会出现如下异常:
Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException:
. 在防火墙中开放端口
使用命令:
lsof -i | grep java | grep “启动的java进程pid”(可通过jps查看)
将查看上一步查看到的tcp监听端口全部在防火墙中进行开放,注意关闭该java进程后重新启动需要重新配置开发的端口,因为监听的端口会发生变化
. 打开visualVm或jconsole输入ip(2中配置的xxx.xxx.xxx)和端口()进行连接即可查看监控,无需输入用户名和密码
监控普通的tomcat
. 下载catalina-jmx-remote.jar,放在tomcat/lib目录下面
地址示例:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/extras/
请根据自己的tomcat版本选择对应的包
. 配置conf/server.xml
在server.xml中添加如下监听配置
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="" rmiServerPortPlatform="" />
有了该可使得每次重启tomat不需要重新在防火墙中开放端口,因为会使用配置的22334端口
. 修改bin/catalina.sh
添加配置:
CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=服务器的外网ip地址"
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote=true"
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.ssl=false"
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false"
. 在防火墙中开放端口
在防火墙中开发22334端口
. 打开visualVm或jconsole输入ip(3中配置的服务器的外网ip地址)和端口()进行连接即可查看监控,无需输入用户名和密码
 
  jmx有密码方式
 
. 添加账号
进入/usr/lib/jvm/java-1.7.-openjdk-1.7.0.91.x86_64/jre/lib/management/目录(可通过jinfo pid|grep java.home的查看自己的java.home)
执行命令:
mv jmxremote.password.template jmxremote.password
chmod jmxremote.password
vim jmxremote.password
将被注释的monitorRole,和controlRole放开,并修改密码123456
monitorRole
controlRole
.修改之前的启动配置
修改配置:
-Dcom.sun.management.jmxremote.authenticate=true
添加配置:
-Dcom.sun.management.jmxremote.password.file=/usr/lib/jvm/java-1.7.-openjdk-1.7.0.91.x86_64/jre/lib/management/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/usr/lib/jvm/java-1.7.-openjdk-1.7.0.91.x86_64/jre/lib/management/jmxremote.access
. 启动
打开visualVm或jconsole输入ip+端口,然后输入之前设置的账号controlRole 和密码 123456即可连上
2、jstatd方式
  jstatd方式能使用visualVM的visualVM GC插件,但无法监控到CPU信息
、开启权限
在/usr/lib/jvm/java-1.7.-openjdk-1.7.0.91.x86_64/jre/lib/security/java.policy中添加
permission java.security.AllPermission;
、启动
rmiregistry &jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true -J-Djava.rmi.server.hostname=服务器外网ip -p
、开放端口
通过netstat -ntlp|grep jstatd查看监听的端口(注意有两个监听端口),在防火墙中进行开放该端口
如果出现:
java.rmi.NotBoundException: JStatRemoteHost
一般等一段时间就恢复正常了
、打开visualVm添加远程主机会自动加载远程java进程
 
 
 
 

java visualVM(jconsole)远程监控服务器java进程的更多相关文章

  1. 使用Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  2. Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  3. 如何利用JConsole观察分析JAVA程序的运行

    今天在CSDN看到一朋友说关于对JVM的研究,正好看到有关于jconsole的文章,特意找了下资料,留着备用 ps:jconsole建议用JDK1.6的1.5的界面太简陋了,另外还有增强版jvisua ...

  4. VisualVM连接远程Java进程

    jstatd是一个RMI(Remove Method Invocation)的server应用,用于监控jvm的创建和结束,并且提供接口让监控工具(如VisualVM)可以远程连接到本机的jvms . ...

  5. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  6. visualvm 监控 远程 机器上的 Java 程序

    JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程 ...

  7. 转:visualvm监控远程机器上的Java程序

    转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款 ...

  8. 如何利用 JConsole观察分析Java程序的运行,进行排错调优

    原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  9. 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

    利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

随机推荐

  1. Mac ssh 免密码登录 Mac 或者 Linux

    最近在 Mac上操作另一台 Mac 和 Linux 服务器,每次输密码太麻烦.所以直接设置 ssh 免密码登录,省去输入密码的过程.先在本机执行 ls ~/.ssh 若不存在 id_rsa,id_rs ...

  2. tp5框架中jquery+ajax分页

    jaxa分页,点击按钮直接替换数据, //php代码$page=Request::instance()->param("page"); $page = empty($page ...

  3. ubuntu16下用QT5实现对话框应用

    ubuntu16下用QT5,实现对话框程序,步骤:生成界面Dialog.ui,将它应用到主程序,通过主程序显示. 一 界面练习 1 Dialog.ui界面生成 在命令行输入:designer 进入界面 ...

  4. JUC详解

    一.Java多线程 -- JUC包源码分析1 -- CAS/乐观锁 乐观锁其实就是不加锁,用CAS + 循环重试,实现多个线程/多个客户端,并发修改数据的问题 使用AtomicStampedRefer ...

  5. py2与py3区别总结

    1. py2中的str是py3中的bytes py2中的Unicode是py3中的str 声明一个字符串变量时,py2 和py3都是str类型,但py2代表字节类型,py3代表文本类型 隐式转换: p ...

  6. spring @Scheduled 并发

    一.spring定时任务配置 applicationContext.xml:红色代码部分为需要配置的部分. <?xml version="1.0" encoding=&quo ...

  7. Lua 和 C++ 交互

    step1.搭建好vs和lua相交互的环境: 1.下载一个lua5.3的源码: 2.有Lua_lib.lib这个文件: 3.开始配置: 鼠标放在工程名那: 右键选属性: 把包含目录点开进行编辑: 地址 ...

  8. PhoenixFD插件流体模拟——UI布局【Resimulation】详解

    Liquid Resimulation 流体再(重)渲染 本文主要讲解Resimulation折叠栏中的内容 主要内容 Overview 综述 Parameters 参数 综述 Liquid Resi ...

  9. 《java并发编程实战》笔记

    <java并发编程实战>这本书配合并发编程网中的并发系列文章一起看,效果会好很多. 并发系列的文章链接为:  Java并发性和多线程介绍目录 建议: <java并发编程实战>第 ...

  10. 529. Minesweeper扫雷游戏

    [抄题]: Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix repre ...