24小时论文定制热线

热门毕设:土木工程工程造价桥梁工程计算机javaasp机械机械手夹具单片机工厂供电采矿工程
您当前的位置:论文定制 > 毕业设计论文 >
快速导航
毕业论文定制
关于我们
我们是一家专业提供高质量代做毕业设计的网站。2002年成立至今为众多客户提供大量毕业设计、论文定制等服务,赢得众多客户好评,因为专注,所以专业。写作老师大部分由全国211/958等高校的博士及硕士生设计,执笔,目前已为5000余位客户解决了论文写作的难题。 秉承以用户为中心,为用户创造价值的理念,我站拥有无缝对接的售后服务体系,代做毕业设计完成后有专业的老师进行一对一修改与完善,对有答辩需求的同学进行一对一的辅导,为你顺利毕业保驾护航
代做毕业设计
常见问题

基于Web的Java应用性能监测系统

添加时间:2019/08/05 来源:南京大学 作者:陈婕妤
本项目是本人在eBay实习时期开发为内部工作人员开发的一款用于监测Java应用性能表现的工具。系统从实际需求出发,测试和开发人员需要远程登录到主机上使用命令行工具查看Java应用性能表现。
以下为本篇论文正文:

摘要

  随着互联网时代的到来,企业对于J2EE的应用越来越广泛,同时用户开始意识到产品非功能性表现的重要性,应用的性能表现自然也受到了大家的关注,尤其是企业内部的产品开发人员和测试人员。在eBay,为确保产品的各项指标运行正常,测试人员需要经常登录到远程服务器上使用命令行工具去查看Java应用的当前性能表现,这是一件需要频繁进行又繁琐的事情。因此,我们设计并实现了基于Web的Java应用性能监测系统。

  该系统使用程序来周期性代替用户登录到远程主机上收集特定应用的性能数据,并将数据保存到数据库,然后生成性能报表,最终以Web形式展示出来。

  本文对该系统进行了设计与实现。系统分为控制台子系统和监测子系统。控制台子系统是负责为用户提供界面的Web应用,用户可yX在Web页面上方便地对针对Java应用的性能监测任务进行添加、删除、修改、开启监测、停止监测等操作,同时还可以查看以图表形式呈现出来的性能报表,子系统按照功能分为监测任务管理模块和性能报表模块。监测子系统是负责完成性能监测任务的Web服务,对外提供监测任务管理RESTFUL API,按功能分为任务管理模块、性能监测模块、阔值告警模块和邮件通知模块,其中性能监测模块是系统中的核屯、模块,负责远程性能数据的采集工作,并将结果存储到数据库中,阀值告警模块通过分析性能数据是否超过阔值,为用户提供告警,邮件通知模块则可按照用户设置的通知级别将性能监测结果、闽值告警信息或性能监测过程中发生的错误邮件的方式发送给用户。控制台子系统通过调用监测子系统提供的Web服务实现对外功能,不涉及具体业务逻辑的处理,所有业务逻辑由监测子系统实现。系统整体基于J2EE平台,采用Spring boot框架、MongoDE数据库实现,远程数据采集模块则基于Python Fabric实现,在技术上使用到了前端技术AJAX,后台技术 RESTful Web Service、多线程等。

  关键词:性能监测、Java应用、Web服务、J2EE、Python Fabric

Abstract

  With the rapid development of network, more and more companies are used to using J2EE to develop web applications. Meanwhile more and more users are beginning to realize the importance of product non-functional performance. As a result, people paid more attendtion to application performance, espeacially those who delevelop and test applications. In eBay, to ensure the product is running normally, testers often need to log on a remote host to see the Java application performance by using command-line tools, which is frequent and tedious. Therefor, we designed and implemented a Java application

  performance monitoring system based on web to help user.

  The System will log on a remote host to collect performance data automatically and periodically for a specified Java application after it received a performance monitor request from user and save the data to database. User can see the performance reports from web page. This thesis describes how to design and implement the system. System is pided into two subsystems: monitor system and console system. Console subsystem is a web application and focused on providing user-friendly UI for user while monitor subsystem is a web service, which is responsible for monitoring java application performance. Based on the web pages provided by console subsystem, user can easily add, delete, edit, start and stop minotoring tasks for remote Java application. What's more, in console subsystem the performance result will be presented in the form of charts and tables which will be more intuitive and vivid.According to the functional module pision principle, console subystem is pided  into task management module and  performance reports module.  Monitor subsystem provides interface by RESTfuI API and includes task management module,performance-monitoring module, warning module and email notification module. The performance-monitoring module is critical in the system, which is responsible for data collection and persistent storage. Warning module sends warning to user when there is abnormal performance. Email notification module is in charge of sending emails to user according to user preference when the performance task completes or goes wrong or an warning rasies. Console subsystem does not process business logic and it implements the function by calling web service provided by monitor subsystem. Monitor subsystem takes charge of implementing business logic for system.System is developed by J2ee based on spring boot framework and uses MongoDB. However, remote data collection program is implemented by Python based on Fabric. AJAX, RESTfuI web service,multithreading and more technology is used when developing.

  Keywords:Performance monitoring, Java application, Web Service, J2EE, Python Fabric

 

  Java作为一款具有卓越的高效性、通用型、可移植性和安全性的程序设计语言,是目前使用人数最多、范围最广的软件开发技术之一,在企业中得到了广泛的应用。eBay作为国内外知名的电子商务公司,在产品开发上也将Java应用作为首选。本人实习所在的QSS Team作为一个测试团队,在测试的过程中,不仅需要关注产品的功能属性是否得到满足,更要关注产品包括性能、安全性等在内的非功能性质量属性。在日常的测试工作中,我们常常需要了解一个产品在不同的Linux安装环境下的性能表现,比如CPU是否过高,内存消耗是否过多等。

  目前,市面上针对Linux上的Java应用性能监测工具主要分为两类,基于命令行的和提供可视化图形接口的。命令行工具,顾名思义就是输入Linux命令,然后显示相关数据。由于一个完整运行的Linux系统的性能包括很多指标,如CPU, Memory, 10, Network等,而Linux的命令行工具通常只针对单个性能指标进行监控和分析,所以用户如果需要监控多个性能指标,往往需要用到多个工具。同时,用户输入命令后,该工具只能显示该系统在该指标上的当前的表现情况,如果用户想要查该系统在一定时间内的表现或趋势时,就需要自己进行结果的记录和汇总,无法做到历史数据的实时记录和汇总分析。另一方面,命令行下的监测工具的结果都是以文本的形式展现出来的,不利于用户进行查看。相比命令行工具,基于Web或者提供图形化接口的工具给用户提供了一个直观生动的可视化的数据结果,但市面上流行的这些工具质量参差不齐,往往需要进行一系列的安装和复杂的配置,学习成本过高。同命令行工具一样,基于Web或者提供图形的可视化的监测工具有的是针对单个指标,监测多个性能指标就需要使用多个工具,有的则包括多个指标,但这些工具的问题在于,当他们支持的指标过多时,如果用户只关心其中的几个指标的时候,他们不能支持用户只选择其中的一些结果进行显示,也就是说,用户的定制化需求无法得到满足。

  在这种情况下,又由于公司内部的服务器有着严格的访问控制,只允许内部网络进行访问,因此,已有的符合用户要求的一些图形化的或者基于Web的监测工具也无法完美地应用在企业内部。所以,通常来说,我们的工作人员会远程登录到主机上,使用linux下的命令行工具对Java应用按照特定的性能指标进行监控和分析。正如本文面所分析的,这个过程将会需要用户使用到多个工具,消耗一定的时间,同时要自己来记录结果和汇总分析,数据的显示也不利用查看分析,还要求用户对这些工具有足够了解,能够熟练地应用。这对于绝大部分内部员工来说是一件比较枯燥和耗费时间的事情。

  因此,我们决定开发一个可视化的针对Linux上的Java应用的性能监测系统,该系统提供对cpu, memory, thread dump在内的性能指标的监测和分析,以Web的形式向用户提供可交互的操作,用户可以对远程主机上的Java应用性能表现发起实时监测,我们的后台系统将根据用户的请求,基于SSH远程登录到对应主机上,使用相应的命令行工具来获取数据文件并对这些文件进行处理分析,最终在Web上将这些数据以图表这种生动直观的形式展示给用户。

  对操作系统和应用程序的性能进行监控是软件维护过程的一个重要环节。导致操作系统和应用程序性能低下甚至崩溃的一个重要原因就是系统资源耗尽[Garg e1 al., 1998],而对操作系统和应用程序运行状态的实时监控可及早发现和定位软件的性能问题,以指导软件后续维护过程中的性能优化和错误修复。

  性能监控的一般方法是采集操作系统和应用程序运行时数据,并对采集到的原始数据进行处理和分析,最终得到一个可读的性能报告,以此评估软件的运行时性能。一般来说,一个通用的监控系统需要采集的原始数据包括操作系统和应用程序的CPU、内存、磁盘和网络性能数据针对特定应用程序的性能监控可能会侧重于采集某些运行时数据,并对这些原始数据有特定的分析方法。

  现阶段针对操作系统的性能监控一般有两种方式。一是使用系统提供的性能监控工具获取操作系统和进程的运行时信息。目前成熟的操作系统都提供了一套现成的工具供用户查看系统和进程的运行信息。Windows系统的“性能监视器”

  应用可以查看操作系统和每个进程的CPU占用、内存使用详情、网络和磁盘占用、己打开的句柄等信息。Linux则提供了一系列的工具用来获取系统和进程的运行信息,例如使用top工具获取处理器信息,使用iostat工具获取磁盘10信息,使用vmstat工具获取内存信息。这些工具往往都是系统提供,开箱即用,方便维护人员对部署在特定设备的软件进行监控。使用系统自带的性能监控工具的弊端是难以在这些工具基础上进行二次开发,进行后续数据处理分析的成本较高。二是使用操作系统提供的编程接口获取统和进程的运行时信息。以Linux为例,lproc伪文件系统为开发者提供了系统的运行信息,例如可以从/proc/stat文件读出当前的CPU的运行信息。这些获取系统运行信息的编程接口是性能监控技术发展的基础,使开发者能够实现功能更强大性能监控软件。

  针对特定应用程序的性能监控,不同于操作系统级别的性能监控,能够针对应用本身提供更多的定制化性能信息。以本文关注的Java应用为例,目前已经有一系列用来分析性能的工具。例如随jdk一同发布的工具jmap和jh即可以用来分析进程内存中的堆栈信息,同样jdk提供的工具JConsole则可以长时间采集、分析和统计Java进程的对象、堆栈、线程等关键运行信息,并实时绘制出图表供用户参考。

  针对特定应用程序性能监控的一个特点是技术最先进的监控软件往往是该应用程序的开发者自己发布的。由于我国基础应用软件起步较晚,操作系统、数据库及应用服务器等基础应用软件几乎都依赖国外产品,所以针对这些软件的监控管理软件发展也比较落后。这方面国内外的差距正在缩小,例如国内开发者发布的J FoxMX工具,完整实现SUN JMX 1.2规范的,同时具有工作负荷小,效率高的特性。

  随着分布式计算和云计算的兴起,传统的程序性能监控方式已经渐渐不能满足软件维护需求。将集群监控技术引入云平台可以有效提高云平台可靠性和服务质量。这方面国外已经很多成功的产品。如美国洛斯阿拉莫斯国家高级计算机实验室开发的集群监控系统Supermon,由一个中心节点和多个数据采集节点组成。

  数据采集节点负责采集数据,中心节点负责汇总数据并进行后续处理。

  Supermon的中心节点记录了数据采集节点的信息,所以这套系统安逸动态添加数据采集节点。但是由于系统中只有一个中心节点,系统性能随系统规模线性下降。

基于Web的Java应用性能监测系统:

任务管理模块详细类图
任务管理模块详细类图

邮件实例
邮件实例

添加监测任务页面
添加监测任务页面

修改监测任务页面
修改监测任务页面

查看监测任务页面
查看监测任务页面

查找监测作业页面
查找监测作业页面

目录

  摘要
  Abstract
  图目录
  表目录
  第一章 引言
    1.1 项目背景
    1.2 性能监测工具发展现状
    1.3 本文的组织结构
  第二章 技术综述
    2.1 开发技术
      2.1.1 RSETful Web Service
      2.1.2 Python Fabric
      2.1.3 Ajax
      2.1.4 Spring Boot
      2.1.5 MongoDB
    2.2 性能监测工具
      2.2.1 Top
      2.2.2 Jstack
    2.3 本章小结
  第三章 系统的分析与设计
    3.1 项目总体概述
    3.2 系统需求分析
      3.2.1 功能需求
      3.2.2 非功能需求
    3.3 系统总体设计
      3.3.1 总体结构
      3.3.2 监测子系统设计
      3.3.3 控制台子系统设计
      3.3.4 数据库设计
    3.4 Web服务对外API的设计
      3.4.1 监测任务管理APl
      3.4.2 启停性能监测API
    3.5 性能监测模块的设计
      3.5.1 总体设计
      3.5.2 数据采集模块的设计
      3.5.3 远程控制模块的设计
      3.5.4 任务调度模块的设计
    3.6 本章小结
  第四章 系统的实现
    4.1 监测子系统的实现
      4.1.1 任务管理的实现
      4.1.2 性能监测的实现
      4.1.3 阂值告警的实现
      4.1.4 邮件通知的实现
      4.1.5 运行截图
    4.2 控制台子系统的实现
      4.2.1 任务管理的实现
      4.2.2 性能报表的实现
      4.2.3 运行截图
    4.3 本章小结
  第五章 总结与展望
    5.1 总结
    5.2 工作展望
  参考文献
  致谢
  版权及论文原创性说明

(如您需要查看本篇毕业设计全文,请您联系客服索取)

相关内容
相关标签:Java毕业设计
好优论文定制中心主要为您提供代做毕业设计及各专业毕业论文写作辅导服务。 网站地图
所有论文、资料均源于网上的共享资源以及一些期刊杂志,所有论文仅免费供网友间相互学习交流之用,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,论文定制中心会立即进行改正或删除有关内容!