利用VisualVM监测Azure云服务中的Java应用

在做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方便的进行监测。

利用VisualVM监测Azure云服务中的Java应用

时间: 2024-10-22 09:48:56

利用VisualVM监测Azure云服务中的Java应用的相关文章

将Windows Azure 虚拟机从一个云服务移动到另外一个云服务中!

最近我们有客户经常谈到一个问题,我创建了不同的云服务.但是我的目的是在同一个云服务下面建立不同的虚拟机,现在我全部搭建完成,但是我发现我建的虚拟机错了,怎么办呢? 我辛辛苦苦建立的虚拟机,竟然不在同一个云服务里面.我又不想出太多钱,有办法么?当然有办法,办法就是利用我们的Powershell 脚本完成我们的虚拟机迁移我们的虚拟机到同一个云服务下面,这个按照我们下面的步骤走起: 首先我们当然是下载Azure Powershell.这个请参考我博客中前面提到的Azurepowershell. 接下来

【云快讯】HP 将关闭公有云服务,转售微软的 Azure 云服务

惠普的企业业务公司已经与微软达成合作伙伴关系,将向客户提供基于Azure云服务,2016年初HP企业业务将关闭自己的公有云服务,Azure将做为主推的云服务. 惠普的首席执行官梅格-怀特曼在周二的电话会议表示,惠普企业服务将把微软作为首选的公共云的合作伙伴,希望和微软达成紧密的合作关系.她没有提供细节,但表示,将在下个月在伦敦举行的HPE(Hewlett-Packard Enterprise)发布大会上进行公布. 惠普选择微软,而不是亚马逊或者谷歌的云进行合作,是由于 HP在服务器和个人电脑领域

WIN10 应用程序修改IIS程序池配置及Azure云服务修改程序池配置避免自动回收

以下内容源自需修改Azure云服务修改程序池的定期回收配置在本地测试及部署到Azure的记录. 一.Win10下修改指定网站应用程序池的配置 1.修改IIS程序池的代码如下: 引用命名空间 using Microsoft.Web.Administration; //初始化IIS操作类 using (ServerManager serverManager = new ServerManager()) { var siteName = "website";//网站名称 var siteAp

在Azure Cloud Service中部署Java Web App(1)

Microsoft Azure是一个开放的,灵活的云平台,除了对自家的.Net平台有良好的支持外,对于各种开源的软件,语言,工具,框架都有着良好的支持,比如Java,Php,Python等等,你可以使用自己喜欢的语言开发任何应用部署在Azure的web site或者云服务中. Azure的云服务是Azure的一个PAAS平台,同样支持多种不同的语言和框架,并且可以基于多种不同的阈值如CPU负载,队列,定时等等实现Auto scaling等高级功能,如下图所示: 本文简单介绍如何使用Azure所提

在Azure Cloud Service中部署Java Web App(2)

接上文. 9.在进行发布之前,需要对我们的订阅做一些设置,因为默认情况下,Azure的service end指向的是Azure global的站点,如果我们要将服务发布在Azure的中国站点,需要做下简单的设置,在Eclipse中,打开偏好设置(preference),找到Azure,在service endpoint页面中,选择"windowsazure.才能(China),选择确定: 10. 回到项目,选择myazuredeploy并单击右键,选择Azure,properties,第一项是选

Azure云服务反向DNS

反向域名解析与通常的正向域名解析相反,提供IP地址到域名的对应.IP反向解析主要应用到邮件服务器中来阻拦垃圾邮件,特别是在国外. 多数垃圾邮件发送者使用动态分配或者没有注册域名的IP地址来发送垃圾邮件,以逃避追踪,使用了域名反向解析后,就可以大大降低垃圾邮件的数量. 如何Windows Azure 提供给用户反向DNS解析呢? 通过Azure Powershell可以做到,Azure Powershell可以去以下地址下载: 中国区官方网站: http://www.windowsazure.cn

Microsoft Azure系列之六 如何为Azure 云服务分配保留IP地址

Azure 虚拟机采用按需付费.自助服务的方式供用户使用. 当我们需要停用虚拟机一段时间时,应采用关闭虚拟机,而不是在虚拟机点击关机按钮(计算服务仍然收费). 关闭虚拟机状态为[已停止(已取消分配)]. 当虚拟机关机时,计算资源停止收费,存储资源仍然需要收费. 然而,某个Cloud Service 中所有服务都关闭了,则云服务的公网IP地址会自动回收,下次再开启的话,可能会分配新的IP地址.那如何为云服务设置保留IP地址? 实现过程: 1.新建云服务 新建-计算-云服务-自定义创建 下一步 设置

azure 云服务证书下载方式

打开地址自动下载证书,vs中项目-右键-发布-导入证书. https://manage.windowsazure.cn/publishsettings/index 在 Visual Studio 中打开发布向导 要打开发布向导,请右键单击一个 Microsoft Azure 部署项目,然后单击“发布”. 2 导入订阅文件 在向导的“登录”页上,单击“导入”. 3 加载订阅信息和凭据 浏览到你刚下载的订阅文件,然后选择“导入”按钮以加载你的订阅并在此计算机上安装你的凭据. 警告 此文件包含一个编码

云服务中消灭小黄图的大宝剑---X次元口袋

X 次元口袋 把数据的场景做深做透,真正帮助用户缩短从想法到产品的距离,是七牛一直以来的使命.从 2011 年至今,围绕数据管理打造场景化 PaaS ,我们已经服务了超过五十万家客户,承载了超过 2000 亿张图片,10 亿小时视频. 对互联网开发者来说,一站式在线数据管理一定要包含针对海量数据的零运维.高可用.高性能的数据处理服务,以便轻松应对图片.音视频及其他各类数据的实时.异步处理场景.目前,七牛提供的数据处理服务已经日处理数近百亿次,除了提供基础数据处理,还基于容器技术打造了易扩展.易部