java 判断进程状态_获取远程服务器上 Java 进程的运行状态

为了安全考虑, 有些服务器会被限制登录. 本文介绍如何获取远程服务器上 Java 进程的运行状态.

启动 jstatd 服务

在服务器端启动 jstatd 服务后, 远程的机器可以通过 rmi 协议获取服务器上 Java 程序的运行状态.

在服务器上创建 jstatd 的授权文件, 假设文件路径为/etc/jstatd.all.policy, 内容如下:

grant codebase "file:/usr/local/java/lib/tools.jar" {

permission java.security.AllPermission;

};

如果你的JAVA_HOME目录不是/usr/local/java的话, 请改为正确的值.

接下来通过以下命令启动 jstatd 服务:

jstatd -J-Djava.security.policy=/etc/jstatd.all.policy -p 12345

需要注意的地方有:

授权文件的路径需要改成你自己的, 最好使用绝对路径.

-p参数指定 jstatd 服务监听的端口. 如果不指定的话, 默认的端口为 1009. 不过从我自己的实践来看, 最好还是设定一个比1024大的端口号.

远程使用jps, jstat命令

在服务器上启动 jstatd 服务之后, 就可以在自己的机器上查看服务器上运行的 Java 进程了. 假设服务器的IP为 192.168.2.37, jstatd 服务监听的端口号为 12345.

首先通过 jps 命令获取服务器上运行的 Java 进程列表:

jps -l rmi://192.168.2.37:12345

拿到 Java 进程的 pid 列表之后, 可以通过 jstat 命令获取某个进程的 GC 信息:

jstat -gcutil rmi://39939@192.168.2.37:12345 1000 1000

其中 39939 表示 Java 进程的pid.

远程使用 VisualVM 监控 Java 应用

通过VisualVM, 可以在图形面板上看到很多 Java 应用的信息, 相当于多个命令(jps, jstat, jstack, jmap, jinfo)的集合.

VisualVM 是一个图形应用, 只能运行在本机, 然后通过远程连接, 获取服务器上的 Java 应用的信息.

通过 $JAVA_HOME/bin/jvisualvm 命令启动 VisualVM, 点击下图的红框部分, 输入要连接服务器的IP地址:

a0c19e31a54ee12be10273c6ef49b6ef.png

然后右键点击服务器地址, 可以看到能够通过2种方式连接服务器, 分别是 jmx 和 jstatd.

00e0ea42af3264eba7e1c466980e27f5.png

按照上述的步骤在服务器上启动 jstatd 服务后, 就能够以 jstatd 的形式连接到远程服务器了.

VisualVM 通过 jstatd 连接的方式能够获取的信息比较有限. 如果想获取更完整的 Java 应用信息, 可以通过 jmx 的方式连接服务器上的 Java 进程. 需要在启动 Java 应用的时候, 指定以下和 jmx 相关的参数:

-Djava.rmi.server.hostname=10.11.2.139 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9090

java.rmi.server.hostname参数指定ip或者host, com.sun.management.jmxremote.port参数指定 jmx 监听的端口.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

彻底搞定C指针-函数名与函数指针[转]

一 通常的函数调用 一个通常的函数调用的例子: //自行包含头文件 void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]) {MyFun(10); //这里是调用MyFun(10);函数return 0; }void MyFun(int x) //这…

聊一聊Elasticsearch和MySQL的常用操作

前言 ElasticSearch,开源的搜索和数据分析引擎,也是名列前茅的 nosql。很多时候会想拿它和关系型数据库做对比,严格上它们是没有太多可比性的。不过把有的东西放在一起比较,会帮助我们快速去理解一些 ElasticSearch 的内容。老黄这…

入门Python,限时1元!

爆竹声中一岁除,春风送暖入屠苏。猪年来袭,小天先跟各位模粉拜年啦!当然,小天还准备了限时福利送给大家~套路?不存在的!限时9元1深度学习限时体验第一章 深度学习概述与计算机视觉挑战1.1深度学习概述1.2 挑…

java 线程访问控件_C#多线程与跨线程访问界面控件的方法

本文实例讲述了C#多线程与跨线程访问界面控件的方法。分享给大家供大家参考。具体分析如下:在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象。启用新线程去访问WebService是一个可行的方法。典型的,有下面的启动新线程…

centos服务器解决vsftp连接时的“550 Create directory operation failed.”错误

在centos服务器中配置好vsftp后,开了root用户上传权限,也关了系统的防火墙,但ftp连接的时候依然还会出现 "550 Create directory operation failed." 错误,如何解决呢? 解决: 1、查看 SELinux 的…

使用 Bridge to Kubernetes 简化云端开发

当我们面对一个大型应用程序,它有大量的微服务,并希望完成一些功能开发?我们面临许多挑战,其中之一将是处理正确的环境,如何进行开发。我们知道,在团队中解决这个问题的最佳方法是将其容器化并在云上托管。…

菜鸟学习数据科学家 5 大误区

全世界只有3.14 % 的人关注了数据与算法之美你准备好要成为一名数据科学家,积极的参加Kaggle比赛和Coursera的讲座。虽然这一切都准备好了,但是一名数据科学家的实际工作与你所期望的却是大相径庭的。本文研究了作为数据科学家新手的5个常见错误。这是由…

java多线程 sycophantic_Java多线程volatile和synchronized总结

volatile是轻量级的synchronized,在多处理器(多线程)开发中保证了共享变量的“可见性”。可见性表示当一个线程修改了一个共享变量时,另外一个线程能读到这个修改的值。正确的使用volatile,能比synchronized的使用和执行成本更低,…

[BOOST] BOOST::Format

cout << format( "%1% says \"%2%\" to %1%.\n" ) % "Yousen" % "Hello";这句话将在标准输出上输出“Yousen says "Hello" to Yousen.”接下来简单说明一下format的用法。估计聪明人都猜到了&#xff0c;在格式化字符…

using IDisposable

using和IDisposable是组合使用的&#xff0c;像这种一个关键字和一个接口的组合&#xff0c;在C#中很少见的&#xff0c;using这个关键字&#xff0c;也就因为IDisposable多了一个身份。其实很多人都知道IDisposable&#xff0c;有一个方法void Dispose()&#xff0c;通常是用来…

春节特惠活动┃不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?...

▲数据汪特别推荐点击上图进入玩酷屋之前小木推荐“德国MINICUTE人体工学腰垫”受到了大家一致的好评和争相购买。小木为什么推荐这一款原因是&#xff1a;据统计&#xff0c;我国腰椎病患者已经突破2亿人。30~40岁人群中&#xff0c;患有颈腰椎病的占比59.1%&#xff01;而且有…

linux mysql phpadmin_linux安装phpmyadmin数据库管理

安装phpmyadminyum -y install phpmyadmin //执行yum在线安装程序安装完成后&#xff0c;可在/usr/share目录下找到phpMyAdmin找到 phpMyAdmin/libraries/config.default.php文件&#xff0c;将config.default.php复制到phpmyadmin目录下&#xff0c;然后更名为config.inc.…

2012平安夜

2012平安夜&#xff0c;我的博客园开通了&#xff0c;在这里我将与他开始崭新的学习生活。

.Net单元测试方法

单元测试是一种编程测试&#xff0c;这些测试既可以使用 Visual C# 或 Visual Basic 编写&#xff0c;也可以使用 Visual C 编写并用 /clr:safe 选项进行编译。单元测试用于通过直接调用某个类的方法&#xff08;传递相应参数&#xff09;来执行其他源代码。因此&#xff0c;如…

春节特惠活动┃给孩子讲100个科学道理,不如带他做这些趣味实验!

▲数据汪特别推荐点击上图进入玩酷屋玩具和学习看似是两个对立的东西&#xff0c;孩子天性爱玩&#xff0c;家长却希望孩子能多学习。不一定非要啃课本才能汲取知识&#xff0c;有时候&#xff0c;在轻松有趣的游戏中也能学到课堂上学不到的知识。让学习变得有趣、高效——给孩…

linux java 进程监控工具_推荐4个好用的Linux监控工具

本文介绍了作者常用的 4 个 Linux 监控工具&#xff0c;希望可以帮助读者提高生产力。身为一个运维开发人员&#xff0c;如果你不知道眼下当前服务器底层操作系统中正在发生什么&#xff0c;那就有点合眼摸象了。其实&#xff0c;你可以根据相应数据做出一定的推测&#xff0c;…

html页面音乐播放器_Embed代码

播放器代码如下&#xff1a; HTML播放器样式1 代码&#xff1a; <P aligncenter> <TABLE borderColor#bc8f8f cellSpacing1 width315 border1> <TBODY> <TR> <TD><EMBED style"FILTER: invert(); WIDTH: 315px; HEIGHT: 28px" sr…

看TensorFlow如何玩转深度学习

自 2015 年 11 月 9 号发布之后&#xff0c;TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。TensorFlow 是一个大规模机器学习的开源框架&#xff0c;提供了多种深度神经网络的支持。不仅 Google 在自己的产品线使用 TensorFlow&#xff0c;包括联想、小米、新浪网…

巧用Newtonsoft.Json处理重复请求/并发请求?

背景一些用户请求在某些情况下是可能重复发送的&#xff0c;如果是查询类操作并无大碍&#xff0c;但其中有些涉及写入操作&#xff0c;一旦重复了&#xff0c;可能会导致很严重的后果。例如交易接口如果重复请求&#xff0c;可能会重复下单。问题假设我们把请求参数&#xff0…

java鼠标改变窗口大小监听事件_java – 当用户拖动鼠标时,监听JFrame调整事件大小?...

当用户单击JFrame的角落来调整大小并拖动鼠标时&#xff0c;JFrame会根据用户拖动时鼠标的当前位置重绘。你怎么听这些事件&#xff1f;下面是我目前尝试的&#xff1a;public final class TestFrame extends JFrame {public TestFrame() {this.addComponentListener(new Compo…