重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如何使用Jprofiler远程监控线上服务,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的石拐网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
先说说这两天遇到的坑
1.同事配的Jenkins没配好,导致我上传的代码部署没生效。因为Gradle服务器打包的jar没传到目标服务器。原因只是Jenkins传输jar包的配置写错了jar包的包名,搞得我又是检查安全组配置,又是检查ssh配置,浪费好多时间。
2.上周后台服务经常挂掉,都是内存不够后被系统kill掉的,后来直接新申请了一台服务器。但是我观察到内存还是一路飙升,cpu使用率也居高不下,思考许久,后台并没有耗到1.7g内存的可能,更没有耗费百分百cpu的业务,一定是哪里出了问题。经过配置jprofiler远程监控后,找到了原因,原来是自己写的jdbc插件耗费了cpu,sql执行慢监控耗费了很大内存,真是自己给自己挖坑。暂时下线了这个插件。
3.服务拆分。后台服务越来越臃肿,是时候重新定义微服务了。我的拆分方案是将所有定时任务抽离成一个独立的服务。某些耦合度高的还得后面再慢慢抽离。
使用Jprofiler远程监控线上服务
Jprofiler是我知道的目前最牛逼的一个JVM性能监控工具,使用Jprofiler加jdk提供的jhat可以解决常见性能调优及故障排查问题。
有些问题还是使用jdk提供命令工具方便,得要根据具体情况选择合适的工具,比如分析gc的日记文件可以用在线的gceasy网站分析。
上图是我此次用来查找慢Sql的截图,比我自己写的慢sql监控插件实用多了。我写的那个插件失败在监控慢sql没有用aop,而是分析sql的执行计划。
Jprofiler的本地GUI工具安装
Jprofiler本地工具安装,安装破解版可搜索我的往期文章,我记得我写过的。
远程服务器的下载安装
需要特别注意的一点是,本地安装的Jprofiler图形界面工具一定要与远程服务器安装的版本号一致。否则远程连接就连接不了。我就遇到这个坑,本地装的9.2,远程装了9.1,结果还试了半天,在Linux上换个9.2的版本就行了。服务器Jprofiler版本去官网下载,本地去网上找个破解版。
先安装本地,因为本地需要找破解版。官网下载页面如下。
注意选择版本号。
Linux服务器选择Linux版本,获取下载链接使用wget下载,或者先下载到本地再用ssh上传到服务器。
下载完成后使用RPM安装。如rpm -ivh jprofiler_linux_9_2_1.rpm。也可以下载gz压缩包,直接解压缩就行,怎么方便怎么来。
如果你的Jdk不是使用yum命令安装的,那么你需要自己配置jdk环境变量,这步我觉得是废话。
使用Jpenable配置远程监控
在jprofiler的安装目录下,进入bin目录有个jpenable工具,运行它,然后选择你需要监控的java进程,如果当前只有一个java进程,默认会选择这个进程,有多个java进程才会让你自己选择。
接着选择profiling模式,输入1选择GUI,按回车。最后输入一个端口号,该端口号是用于你本地Jprofiler与远程jprofiler进程通信的端口。如果是阿里云或者亚马逊的服务器,记得给端口配置安全组规则。如果有开启防火墙记得开放该端口。具体步骤如图所示。
本地监控远程
按照步骤走。第一步创建一个会话,就是本地与远程jprofiler的连接,通过建立连接,读取远程jprofiler监控目标java进程的信息。选择new remote integration。
第二步,选择本地还是远程。选择远程机器,然后选择服务器的系统和cpu架构。一般服务器都是x86或者amd的cpu。
第三步,配置远程服务器使用的是哪个版本的jdk。
第四步,选择先配置,后面再连接。
第五步,配置远程服务器的ip地址
第六步,配置远程机器jprofiler的安装目录
第七步
第八步,输入远程机器jprofiler监听的端口,前面jpenable后配置的那个端口号。
接着Finish就配置好了。
连接失败情况
1.远程机器上执行./jpenable时,提示No unprofiles JVMs found?
分析:该Java进程已经开启过监控了,需要将目标java进程kill掉然后重启。
2.怎么关闭Jprofiler的远程监控?
只有一种方式,就是重启被监控的java进程,Jprofiler就会失效。重新监控需要重启java进程后重新执行jpenable。
原理可参考我之前写的一篇字节码插桩实现业务代码调用链监控的文章,只是jprofiler使用的是根据进程切入,复杂一些。也可以看阿里提供的Arthas的实现原理。或者看 Java SE 6 新特性---- Instrumentation 的新功能。
关于如何使用Jprofiler远程监控线上服务问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。