首页 理论教育 主机管理与云计算中的性能

主机管理与云计算中的性能

时间:2023-11-20 理论教育 版权反馈
【摘要】:但造成用户访问变慢的直接原因往往是主机内存使用率及CPU使用率的上升。Java虚拟机本身就内建了一些JMX管理模块,可以监控内存以及CPU的使用情况。由于Tomcat本身使用Java语言实现,所以通过监控Java虚拟机,可以达到监控Tomcat的目的。图1-14 JConsole配置页面输入Tomcat应用服务器所在的虚拟机IP地址192.168.48.128,在JMX服务端口9004单击“连接”按钮,将展示Tomcat应用服务器所在虚拟机的运行情况,如图1-15所示。启动虚拟机的命令如下。

主机管理与云计算中的性能

通过提高虚拟机性能以及增加虚拟机的数量,我们成功地提高了应用程序的访问速度。

但与此同时,部署应用程序所要求的计算资源也越来越多了,尤其是当访问量比较低时,仍要使用两台虚拟机就显得有些浪费资源(在云计算环境里,一般按照使用的计算资源量来收费,多使用虚拟机也就意味着要花更多的金钱)。

如果应用程序可以在用户访问量增大时增加适当的计算资源,而在访问量减少时,释放多余的计算资源,那么就既达到了提高用户访问速度的要求,又节约了有限的资金。

上面这个需求可以分为两个方面:

●监控用户访问量。

●根据用户访问量增加或者减少应用服务器的数量。

下面分别解决这两个问题。

1.监控用户访问量

监控用户访问量有很多办法,比如设置网络计数器,监控流量。但造成用户访问变慢的直接原因往往是主机内存使用率及CPU使用率的上升。针对此情况,Java虚拟机提供了一个专门的监控工具JMX。

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活地开发无缝集成的系统、网络和服务管理应用。

Java虚拟机本身就内建了一些JMX管理模块,可以监控内存以及CPU的使用情况。

由于Tomcat本身使用Java语言实现,所以通过监控Java虚拟机,可以达到监控Tomcat的目的。

另外,Java开发工具中的JConsole提供了图形化的监控页面。

(1)配置Tomcat启动脚本

在Tomcat安装目录中找到catalina.bat文件,这是一个Windows脚本。用来启动Tomcat应用服务器。

在:doRun和:doStart方法后面,加入JMX设置选项,代码如下:

978-7-111-36687-4-Chapter01-16.jpg

上面的设置表明,JMX管理服务端口是9004,访问JMX服务不需要认证(为了便于演示)。

(2)通过JConsole观察Tomcat中资源的使用状况

在Windows命令行提示符里输入“jconsole”后按〈Enter〉键,将呈现如图1-14所示的JConsole配置页面。

978-7-111-36687-4-Chapter01-17.jpg

图1-14 JConsole配置页面

输入Tomcat应用服务器所在的虚拟机IP地址192.168.48.128,在JMX服务端口9004单击“连接”按钮,将展示Tomcat应用服务器所在虚拟机的运行情况,如图1-15所示。

在图1-15中可以看到线程、内存、Java类以及操作系统的相关情况。

现在再次用JMeter模拟100个用户同时访问宠物商店,同时使用JConsole观测Tomcat内存使用情况,如图1-16所示。

在图1-16中可以看到,内存的使用有明显增长。这也证明了内存的使用率与所访问的用户量是有因果关系的,我们可以通过监控对内存的使用来判断是否应该增加新的应用服务器。(www.xing528.com)

978-7-111-36687-4-Chapter01-18.jpg

图1-15 Tomcat应用服务器所在虚拟机的运行情况

978-7-111-36687-4-Chapter01-19.jpg

图1-16 当用户访问量激增时内存的使用状况

2.监控程序设计实现

通过JConsole我们观察到当用户访问量激增时,堆内存的使用迅速上升。现在可以通过JMX编程接口动态地得到堆内存的使用率,如代码清单1-1所示。

【代码清单1-1】

978-7-111-36687-4-Chapter01-20.jpg

通过这个程序可以得到堆内存的使用率。

(1)根据用户访问量,增加或者减少应用服务器的数量

通过上面的程序,可以实时得到内存使用率。下面,将通过编写程序来实现增加或减少虚拟机,以达到控制应用服务器数量的目的。

VMware Server提供了一套VMwareVIX编程接口及相应的命令行程序操作,供开发人员编写程序使用。VIX编程接口现在支持Perl和COM语言。暂时没有直接针对Java编程语言的编程接口,但这并不妨碍我们使用Java语言来实现控制虚拟机的数量。我们可以使用Ja-va程序调用命令行。

这里给出启动以及关闭虚拟机的命令。

启动虚拟机的命令如下。

978-7-111-36687-4-Chapter01-21.jpg

关闭虚拟机的命令如下。

978-7-111-36687-4-Chapter01-22.jpg

现在可以通过Java语言实现启动与关闭虚拟机的操作,如代码清单1-2所示。

【代码清单1-2】

978-7-111-36687-4-Chapter01-23.jpg

978-7-111-36687-4-Chapter01-24.jpg

(2)集成监控与虚拟机操作代码

现在可以把监控代码与虚拟机操作代码集成在一起,做一个虚拟机调度器,如代码清单1-3所示。

【代码清单1-3】

978-7-111-36687-4-Chapter01-25.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈