在做Java开发的时候,我们需要在上线之前对程序进行压力测试,对程序的性能进行全面的监控,了解JVM的CPU,内存,GC,classes,线程等等信息,或者在程序上线运行的过程当中以便于诊断问题或者对程序做出优化,市面上做Java profiling的工具也比较多,比如商业的JProfiler,JClarity等,也有免费的JDK自带的工具,如VisualVM,JConsole,JMC等等,那么当我们将Java应用程序部署到了Azure Cloud Service中,如何利用这些工具做性能监控和调优昵?本文以Oracle JDK 1.8自带的VisualVM和JMC来做例子。

我们先来看看VisualVM在本地运行的效果,我的本次测试环境启动了Eclipse,Tomcat等应用,进入你的Java安装目录,打开bin文件夹,找到jvisualvm程序,并打开可看到主界面,已经发现了本地运行的Java程序:

可以看到累出了3个本地运行的Java程序,双击pid为19256的tomcat程序,可以看到丰富的选项,例如overview,monitor,thread等:

那么问题来了,当我们将Java web app部署到Azure Cloud Service以后,如何进行JVM的性能监控昵?一个简单的办法就是利用Cloud service的RDP服务,登陆到远程的机器,然后打开本地的VisualVM进行监控,但我们会发现,虽然我们的Java应用可以正常访问,但却无法看到Tomcat或者Jetty应用服务器的进程,也无法监控:

在本人经过测试,发现最主要的原因是Cloud Service在启动Jetty的时候,将Java作为后台程序运行,所以用VisualVM在Cloud Service的本地实例中也无法检测。VisualVM获取JVM数据有两种方式,JMX或者jstat,在将Java App部署在云服务中后,需要你显式的指定JMX参数开启服务,然后才可以监测,以下是step by step的步骤:

本文假定你已经数量掌握:

A。将Java App部署到Azure云服务(http://cloudapps.blog.51cto.com/3136598/1699880)

B。配置云服务远程连接

  1. 在Eclipse中打开你的Azure deployment项目,找到package.xml:

  2. 找到Jetty启动行,在Java start之后添加添加JMX参数:

    -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1099(该端口可自己定义)

    -Dcom.sun.management.jmxremote.ssl=false

    -Dcom.sun.management.jmxremote.authenticate=false

    找到Jetty启动行:

    将上述JMX参数添加到Jetty启动参数中

  3. 保存修改,将该项目重新部署到Azure云服务中:

  4. 通过远程桌面连接到Azure云服务实例中,应用程序一般部署在"E:\approot"下,打开该目录,进入到JDK的bin目录,打开VisualVM:

  5. 可以看到目前是看不到Jetty相关的任何信息的,只有VisualVM一个进程,我们之前部署的Jetty实际上已经开启了JMX,可以作为VisualVM的一个source提供相关的性能数据,那么我们对VisualVM来做个简单配置,选择"File"-》"Add JMX Connection":

  6. 在Connection中输入127.0.0.1:1099(之前配置的端口号),在Display Name中心个你喜欢的名字,比如Jetty,点击ok完成。

  7. 双击左侧列表中的Jetty,你就可以看到,你已经可以通过JMX监测本地的Java应用了:

  8. 到此为止,VisualVM已经可以工作了,那么我们一鼓作气,顺便把Java Mission Control和JConsole也一起配置了:)同样打开E:\app\JDK_HOME\bin,双击jmc,启动Java Mission Control:

    单击"Click here to start using。。。。",开始使用JMC

  9. 同样的道理你可以看到,在jmc中,只能看到已经启动的VisualVM和JMC,看不到Jetty。选择File-connect来进行JMX的配置:

    10. 在出现的主界面,选择"Creat New Connection",进入下一页,在主界面中配置本地port为1099,点击"Test Connection"进行测试,如果一切正常,那么测试状态为OK:

    11. 点击下一步,在选择中,选择start JMX Console,并点击Finish:

    12. 那么在新的界面中你就可以使用JConsole监测你的应用程序,查看各项指标:

    我们已经配置了如何在Azure云服务上配置VisulVM和JMC/Jconsole进行Java App的性能监测,可以看到大部分在Windows上可以使用的工具一样可以很好的跑在Azure云服务上,并且我们可以通过RDP方便的进行监测。

转载于:https://my.oschina.net/stevenL/blog/615192

利用VisualVM监测Azure云服务中的Java应用相关推荐

  1. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  2. Azure云服务基础知识

    文章目录 Azure云服务基础知识 一:计算服务 二:网络服务 三:存储服务 四:数据库服务 五:Web服务 六:大数据服务 七:其他服务 Azure云服务基础知识 一:计算服务 Azure虚拟机:A ...

  3. azure云服务使用方法_使用Azure认知服务自动执行表单处理

    azure云服务使用方法 由机器学习提供支持的 Microsoft认知服务是一种向您的应用程序添加人工智能的简便方法,使您可以按需付费,访问各种有用的算法 . 与许多其他Web服务不同,它们正在不断发 ...

  4. azure云服务使用方法_在Azure Kubernetes服务上使用HashiCorp Consul

    azure云服务使用方法 Kubernetes之类的工具在简化大规模构建分布式应用程序的过程上大有帮助. 但是它们只是故事的一部分,提供了在主机系统之间复制容器化微服务的方法. 如果要获得抽象的数据中 ...

  5. Microsoft Azure云服务停机!系水泵未知原因关闭导致

    据悉,微软位于英国南部的数据中心设施内多个冷冻水泵因未知原因而关闭,因而导致Microsoft Azure云服务进入停机状态.微软目前已将设施内其余正在运行的部分设备进行关机处理,以阻止温度再进一步的 ...

  6. Azure云服务简单实现

    文章目录 Azure云服务简单实现 一:创建VM(虚拟机 二:创建堡垒机 Azure云服务简单实现 一:创建VM(虚拟机 ) 首先我们先登录Azure的门户网站然后点击创建资源组 按照要求一步一步的创 ...

  7. Azure云服务托管恶意软件

    导读 AppRiver安全公司发现,从网络钓鱼模板到恶意软件以及命令和控制服务,Azure云服务依然存在安全问题,研究发现其根源问题存在于微软的Azure基础设施中. 微软Azure云服务被用于托管恶 ...

  8. Azure云服务基础其五

    文章目录 Azure云服务基础其五 什么是Azure Kubernetes 服务 创建 Kubernetes集群 部署应用程序 测试应用程序 Azure云服务基础其五 什么是Azure Kuberne ...

  9. Azure云服务基础其二

    文章目录 Azure云服务基础其二 配置VM的专用IP地址和DNS服务器地址 导出VM磁盘 附加磁盘到VM 添加磁盘快照 Azure云服务基础其二 配置VM的专用IP地址和DNS服务器地址 我们在VM ...

最新文章

  1. 用RPM包安装MySQL的默认安装路径问题
  2. Mysql数据库查询语法详解
  3. 试读angular源码第三章:初始化zone
  4. OPPO R11巴萨限量版开售,上午10点线上线下火爆开启!
  5. EOS Dawn 1.0
  6. springMVC纯java代码配置(一)- 数据源与事务管理(转载的哦)
  7. Linux公社资料库地址
  8. 特斯拉最安全的车_特斯拉现在是最受欢迎的租车选择
  9. 【交换机】MAC-VLAN的功能作用是什么,如何设置
  10. 高德地图跟百度地图经纬度互转
  11. 如何进行云主机带宽测试
  12. oracle数据泵能增量吗,Oracle12c中数据泵新特性之功能增强(expdp, impdp)
  13. 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。...
  14. 2021年下半年信息安全工程师上午真题及答案解析
  15. 《人工智能:一种现代的方法》笔记(一)
  16. 利用python、selenium和超级鹰 实现B站自动登录
  17. 【linux内核分析与应用-陈莉君】文件系统
  18. docker 出现错误:no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS
  19. mac 中 caps lock和control键交换,以及alt键替换option方法
  20. 《UNIX网络编程》配置unp.h头文件

热门文章

  1. HTML-DOM树篇
  2. 如何对Linux的ubuntu系统进行引导修复?1分钟详细教程!
  3. 基于LABVIEW的星球大战游戏
  4. VB中操作剪粘板方法
  5. JAVA设计模式(04):创建型-建造模式(Builder)
  6. 如何查找是谁删除了服务器文件
  7. WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
  8. 区块链快速入门(一)——区块链简介
  9. Java 五子棋AI博弈树算法实现
  10. python脚本部署为Windows服务