著录项信息
专利名称 | JavaWeb应用性能诊断方法及装置 |
申请号 | CN201410268376.0 | 申请日期 | 2014-06-16 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2015-12-30 | 公开/公告号 | CN105204983A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/36 | IPC分类号 | G;0;6;F;1;1;/;3;6查看分类表>
|
申请人 | 北京基调网络系统有限公司 | 申请人地址 | 北京市朝阳区霞光里5号301室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京基调网络股份有限公司 | 当前权利人 | 北京基调网络股份有限公司 |
发明人 | 杨金全 |
代理机构 | 北京汇泽知识产权代理有限公司 | 代理人 | 张瑾 |
摘要
本发明提供一种Java Web应用性能诊断方法及装置,该方法包括:获取处理HTTP请求的应用的应用配置信息,应用配置信息包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值;根据应用配置信息对应用开启监控服务;应用结束时,获取应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录应用的代码的执行过程数据。实现依据不同的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。
Java Web应用性能诊断方法及装置\n技术领域\n[0001] 本发明涉及应用性能管理领域,尤其涉及一种Java Web应用性能诊断方法、装置及系统。\n背景技术\n[0002] Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性。Java Web是用Java技术来解决相关web互联网领域的技术总和。\n[0003] 为了监控WEB服务器应用的性能,存在两类性能监测工具。一类工具通过追踪HTTP的请求过程来记录应用的性能、网络信息和故障,此类工具具有可以从服务器外部发起、模拟用户发起网络请求、不针对具体的服务器编程语言等特征。然而此类工具有以下几个缺点:1)模拟用户发起请求,如果采样数量少,数据会不准确,如果采样数量大,会对服务器造成额外的压力2)仅能记录应用的总响应性能,无法更深入的追踪到代码级别,出现服务器性能问题时无法定位具体原因。\n[0004] 另一类工具可对应用服务器的性能进行级监控,例如JProfiler。此类工具可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪个方法占用较大的CPU资源。然而此类工具有以下几个缺点:1)系统资源消耗大;2)仅监控性能数据,无法提供故障信息;3)性能数据不直观,只有函数名称及其对应性能,没有按照用途进行分类,大部分没有专业技能的人员不了解数据含义。\n发明内容\n[0005] 针对传统技术的上述缺陷,本发明实施例提供一种Java Web应用性能诊断方法及装置。\n[0006] 本发明实施例提供一种Java Web应用性能诊断方法,方法包括如下步骤:\n[0007] 获取处理HTTP请求的应用的应用配置信息,所述应用配置信息包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值;\n[0008] 根据所述应用配置信息对所述应用开启监控服务;\n[0009] 所述应用结束时,获取所述应用的代码执行时间;\n[0010] 根据所述应用配置信息和所述应用的代码执行时间记录所述应用的代码的执行过程数据。\n[0011] 在另一实施例中,所述获取处理HTTP请求的应用的应用配置信息,包括:\n[0012] 获取HTTP请求;\n[0013] 根据所述HTTP请求获取请求的URL地址;\n[0014] 根据所述URL地址从哈希表中获取处理所述HTTP请求的应用的应用配置信息,所述哈希表中存储了所述URL地址与所述应用的应用配置信息的映射关系。\n[0015] 在另一实施例中,所述根据所述应用配置信息对所述应用开启监控服务,包括:\n[0016] 根据所述应用配置信息,判断所述应用的监控服务开关是否处于开启状态;\n[0017] 若所述监控服务开关处于开启状态,则开启针对所述应用的监控服务。\n[0018] 在另一实施例中,所述根据所述应用配置信息和所述应用的代码执行时间记录所述应用的代码的执行过程数据,包括:\n[0019] 判断所述应用的代码执行时间是否大于所述代码执行时间阈值,且所述应用的所述记录代码执行过程开关开启;\n[0020] 若是,则记录所述应用的代码的执行过程数据。\n[0021] 在另一实施例中,所述应用包括Http Servlet、数据库访问、Framework、Memcache、NoSql、Exception。\n[0022] 在本实施例的技术方案中,通过获取处理HTTP请求的应用的应用配置信息,根据应用配置信息对该应用开启监控服务;应用结束时,获取该应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录该应用的代码的执行过程数据。实现依据不同的的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。\n[0023] 本发明实施例提供一种Java Web应用性能诊断装置,所述装置包括:\n[0024] 获取模块,用于获取处理HTTP请求的应用的应用配置信息,所述应用配置信息包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值;\n[0025] 监控模块,用于根据所述应用配置信息对所述应用开启监控服务;\n[0026] 处理模块,用于所述应用结束时,获取所述应用的代码执行时间;\n[0027] 记录模块,用于根据所述应用配置信息和所述应用的代码执行时间记录所述应用的代码的执行过程数据。\n[0028] 在另一实施例中,所述获取模块包括:\n[0029] 第一获取单元,用于获取HTTP请求;\n[0030] 第二获取单元,用于根据所述HTTP请求获取请求的URL地址;\n[0031] 第三获取单元,用于根据所述URL地址从哈希表中获取处理所述HTTP请求的应用的应用配置信息,所述哈希表中存储了所述URL地址与所述应用的应用配置信息的映射关系。\n[0032] 在另一实施例中,所述监控模块包括:\n[0033] 第一判断单元,用于根据所述应用配置信息,判断所述应用的监控服务开关是否处于开启状态;\n[0034] 监控单元,用于若所述监控服务开关处于开启状态,则开启针对所述应用的监控服务。\n[0035] 在另一实施例中,所述记录模块包括:\n[0036] 第二判断单元,用于判断所述应用的代码执行时间是否大于所述代码执行时间阈值,且所述应用的所述记录代码执行过程开关开启;\n[0037] 记录单元,用于若所述应用的代码执行时间大于所述代码执行时间阈值,且所述应用的所述记录代码执行过程开关开启,则记录所述应用的代码的执行过程数据。\n[0038] 在另一实施例中,所述应用包括Http Servlet、数据库访问、Framework、Memcache、NoSql、Exception。\n[0039] 在本实施例的技术方案中,通过获取处理HTTP请求的应用的应用配置信息,根据应用配置信息对该应用开启监控服务;应用结束时,获取该应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录该应用的代码的执行过程数据。实现依据不同的的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。\n附图说明\n[0040] 图1为本发明Java Web应用性能诊断方法第一实施例流程图;\n[0041] 图2为本发明Java Web应用性能诊断方法第二实施例流程图\n[0042] 图3为本发明Java Web应用性能诊断装置第一结构示意图;\n[0043] 图4为本发明Java Web应用性能诊断装置第二结构示意图。\n具体实施方式\n[0044] 多个Java应用运行于Java Web服务器的JVM虚拟机之上,客户端发送HTTP请求至Java Web服务器时,Java Web服务器会立刻启动一个对应的应用处理该HTTP请求。本发明各实施例主要用于监测Java Web服务器处理HTTP请求的应用性能。\n[0045] 图1为本发明Java Web应用性能诊断方法第一实施例流程图,如图1所示,本发明实施例所提供的Java Web应用性能诊断方法由Java Web应用性能诊断装置执行,Java Web应用性能诊断装置可采用软件/硬件实现,该方法包括:\n[0046] 步骤S100,获取处理HTTP请求的应用的应用配置信息;\n[0047] 具体地,客户端发送HTTP请求至Java Web服务器,Java Web服务器启动处理该HTTP请求的应用,Java Web应用性能诊断装置获取该HTTP请求。该HTTP请求中包括对应应用的URL地址,Java Web应用性能诊断装置根据URL地址获取处理该HTTP请求的应用的应用配置信息,其中应用配置信息中包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值。\n[0048] 在另一实施例中,Java Web应用性能诊断装置通过SevletContext获取应用名称,根据应用名称获取处理HTTP请求的应用的应用配置信息。\n[0049] 在另一实施例中,用户可以预先设置某个应用的应用配置信息。例如用户在Java Web应用性能诊断装置中指定仅检测某个虚拟主机下的应用;或禁用对某个应用或URL的监控服务。\n[0050] 步骤S102,根据所述应用配置信息对所述应用开启监控服务;\n[0051] 判断应用配置信息中该应用的监控服务开关是否开启,如果是,则对该应用开启监控服务。如果否,则直接退出监控服务。其中监控服务包括记录应用的开始时间、对应用进行分类、识别应用使用的组件和框架等。\n[0052] 步骤S104,所述应用结束时,获取所述应用的代码执行时间;\n[0053] 应用的代码执行结束时,获取该应用的结束时间,根据该应用的开始时间和结束时间计算该应用的代码执行时间。\n[0054] 步骤S106,根据所述应用配置信息和所述应用的代码执行时间记录所述应用的代码的执行过程数据。\n[0055] 在本实施例的技术方案中,通过获取处理HTTP请求的应用的应用配置信息,根据应用配置信息对该应用开启监控服务;应用结束时,获取该应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录该应用的代码的执行过程数据。实现依据不同的的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。\n[0056] 图2为本发明Java Web应用性能诊断方法第二实施例流程图,如图2所示,本发明实施例所提供的Java Web应用性能诊断方法由Java Web应用性能诊断装置执行,该方法包括:\n[0057] 步骤S200,获取HTTP请求;\n[0058] 步骤S202,根据HTTP请求获取请求的URL地址;\n[0059] 步骤S204,根据URL地址从哈希表中获取处理HTTP请求的应用的应用配置信息;\n[0060] 其中,应用配置信息包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值。\n[0061] 其中,哈希表中存储了URL地址或应用名称与该应用的应用配置信息的映射关系。\n[0062] 步骤S206,根据应用配置信息,判断应用的监控服务开关是否处于开启状态;若监控服务开关处于开启状态,则进入步骤S208;\n[0063] 步骤S208,开启针对该应用的监控服务;\n[0064] 步骤S210,该应用结束时,判断该应用的记录代码执行过程开关是否开启;若是则进入步骤S212;\n[0065] 步骤S212,获取该应用的代码执行时间;\n[0066] 步骤S214,判断该应用的代码执行时间是否大于该应用的代码执行时间阈值;若是则进入步骤S216;\n[0067] 步骤S216,记录应用的代码的执行过程数据。\n[0068] 具体地,Java Web服务器的JVM虚拟机开启时,加载Java Web应用性能诊断方法。\n通过Instrumentation类获取所有运行时类;通过对每个类的字节码分析,对需要监控的Java类的应用的方法进行嵌码,即在Java类的方法中嵌入Java Web应用性能诊断方法的软件代码。\n[0069] 在Java Web应用启动时根据ServletContext初始化信息获取应用的名称,根据应用名称加载该应用的配置信息。将该应用的配置信息存储到哈希表中。其中哈希表中存储了URL地址或应用名称与该应用的应用配置信息的映射关系。\n[0070] 客户端发来HTTP请求后,服务器迅速开启一个线程处理该HTTP请求,获取HTTP请求中的URL地址,根据该URL地址从哈希表中获取该应用的应用配置信息。其中应用配置信息中包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值。\n[0071] 进一步地,如果哈希表内不存在该应用的应用配置信息或应用配置信息已经失效,则重新中读取该应用的应用配置信息,并保存到哈希表内并设置失效时间,最小化与服务器通讯时引入监控对应用的性能影响。\n[0072] 判断该应用的监控服务开关是否处于开启状态,若是则监控服务依附该线程对处理该HTTP请求的应用进行监控,记录该应用的开始时间。\n[0073] 针对不同的应用存在不同的监控服务,具体包括:\n[0074] (1)监控HttpServlet性能,包括:根据ServletContext确定应用名称,以及获取ServletContextInit性能;依据HttpServletRequest对HTTP请求进行命名并记录请求参数;计算用户代码的执行性能;根据配置参数记录代码的执行过程。\n[0075] (2)监控数据库访问性能,通过对JDBC进行扩展,识别数据库信息,获取数据库性能,并对操作类型进行汇总;如可以对select、insert等汇总;如果数据库操作性能超出定义的阈值,还可以获取特定数据库服务的执行计划。\n[0076] (3)监控Framework性能,通过对Spring Dispatcher、Spring Handler等Spring框架的扩展,获取Spring Framework的性能;通过对Struts Action、XWork等Struts1和Struts2框架的扩展,获取Struts Framework的性能;通过对Play Dispatch、Play Controller、Play2Routing等Play框架的扩展,获取Play Framework的性能。\n[0077] (4)监控Memcached性能,通过对JavaMemcachedClient、SpyMemcachedClient和XMemcachedClient扩展,获取Memcached的响应性能,并对不同的操作(如add,get等)进行汇总。\n[0078] (5)监控NoSql性能,通过对DBCollection的扩展获取MongoDB的性能,并根据操作类型(如:find、insert、update等)进行性能汇总;通过对Jedis的扩展获取Redis的性能,并对不同的操作(如:get、set、del)进行汇总。\n[0079] (6)监控Exception,包括Java的Exception和HttpError;捕获程序运行过程中的Exception,以及抓取Http Response响应代码,并根据需求记录结果。\n[0080] 应用结束时,读取该应用的应用配置信息,判断该应用的记录代码执行过程开关是否开启,若开启则记录该应用的结束时间。根据该应用的开始时间和结束时间计算出该应用的代码执行时间;若关闭则直接退出监控服务。\n[0081] 判断该应用的代码执行时间是否大于该应用的代码执行时间阈值,若是则记录该应用的代码的执行过程。\n[0082] 在本实施例的技术方案中,通过获取处理HTTP请求的应用的应用配置信息,根据应用配置信息对该应用开启监控服务;应用结束时,获取该应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录该应用的代码的执行过程数据。实现依据不同的的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。\n[0083] 图3为本发明Java Web应用性能诊断装置第一结构示意图,如图3所示,该装置包括:\n[0084] 获取模块10,用于获取处理HTTP请求的应用的应用配置信息,所述应用配置信息包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值;\n[0085] 监控模块11,用于根据所述应用配置信息对所述应用开启监控服务;\n[0086] 处理模块12,用于所述应用结束时,获取所述应用的代码执行时间;\n[0087] 记录模块13,用于根据所述应用配置信息和所述应用的代码执行时间记录所述应用的代码的执行过程数据。\n[0088] 本实施例中Java Web应用性能诊断装置用于执行上述Java Web应用性能诊断方法,具有相同的功能模块,在此不再赘述。\n[0089] 在本实施例的技术方案中,通过获取处理HTTP请求的应用的应用配置信息,根据应用配置信息对该应用开启监控服务;应用结束时,获取该应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录该应用的代码的执行过程数据。实现依据不同的的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。\n[0090] 图4为本发明Java Web应用性能诊断装置第二结构示意图,如图4所示,该装置包括:\n[0091] 获取模块20,用于获取处理HTTP请求的应用的应用配置信息,应用配置信息包括是否开启监控服务开关、是否开启记录代码执行过程开关、代码执行时间阈值;\n[0092] 监控模块21,用于根据应用配置信息对应用开启监控服务;\n[0093] 处理模块22,用于应用结束时,获取应用的代码执行时间;\n[0094] 记录模块23,用于根据应用配置信息和应用的代码执行时间记录应用的代码的执行过程数据。\n[0095] 具体地,获取模块20包括:\n[0096] 第一获取单元201,用于获取HTTP请求;\n[0097] 第二获取单元202,用于根据HTTP请求获取请求的URL地址;\n[0098] 第三获取单元203,用于根据URL地址从哈希表中获取处理HTTP请求的应用的应用配置信息,哈希表中存储了URL地址与应用的应用配置信息的映射关系。\n[0099] 监控模块21包括:\n[0100] 第一判断单元211,用于根据应用配置信息,判断应用的监控服务开关是否处于开启状态;\n[0101] 监控单元212,用于若监控服务开关处于开启状态,则开启针对应用的监控服务。\n[0102] 记录模块23包括:\n[0103] 第二判断单元231,用于判断应用的代码执行时间是否大于代码执行时间阈值,且应用的记录代码执行过程开关开启;\n[0104] 记录单元232,用于若应用的代码执行时间大于代码执行时间阈值,且应用的记录代码执行过程开关开启,则记录应用的代码的执行过程数据。\n[0105] 其中,针对不同的应用存在不同的监控服务,具体包括:\n[0106] (1)监控HttpServlet性能,包括:根据ServletContext确定应用名称,以及获取ServletContextInit性能;依据HttpServletRequest对HTTP请求进行命名并记录请求参数;计算用户代码的执行性能;根据配置参数记录代码的执行过程。\n[0107] (2)监控数据库访问性能,通过对JDBC进行扩展,识别数据库信息,获取数据库性能,并对操作类型进行汇总;如可以对select、insert等汇总;如果数据库操作性能超出定义的阈值,还可以获取特定数据库服务的执行计划。\n[0108] (3)监控Framework性能,通过对Spring Dispatcher、Spring Handler等Spring框架的扩展,获取Spring Framework的性能;通过对Struts Action、XWork等Struts1和Struts2框架的扩展,获取Struts Framework的性能;通过对Play Dispatch、Play Controller、Play2Routing等Play框架的扩展,获取Play Framework的性能。\n[0109] (4)监控Memcached性能,通过对JavaMemcachedClient、SpyMemcachedClient和XMemcachedClient扩展,获取Memcached的响应性能,并对不同的操作(如add,get等)进行汇总。\n[0110] (5)监控NoSql性能,通过对DBCollection的扩展获取MongoDB的性能,并根据操作类型(如:find、insert、update等)进行性能汇总;通过对Jedis的扩展获取Redis的性能,并对不同的操作(如:get、set、del)进行汇总。\n[0111] (6)监控Exception,包括Java的Exception和HttpError;捕获程序运行过程中的Exception,以及抓取Http Response响应代码,并根据需求记录结果。\n[0112] 本实施例中Java Web应用性能诊断装置用于执行上述Java Web应用性能诊断方法,具有相同的功能模块,在此不再赘述。\n[0113] 在本实施例的技术方案中,通过获取处理HTTP请求的应用的应用配置信息,根据应用配置信息对该应用开启监控服务;应用结束时,获取该应用的代码执行时间;根据应用配置信息和应用的代码执行时间记录该应用的代码的执行过程数据。实现依据不同的的HTTP请求中的URL地址从Java Web应用性能诊断装置中读取动态的应用设置,避免研发人员的介入。\n[0114] 应说明的是:以上实施例仅用以说明本发明而非限制,本发明也并不仅限于上述举例,一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围中。
法律信息
- 2021-03-12
专利权人的姓名或者名称、地址的变更
专利权人由北京基调网络系统有限公司变更为北京基调网络股份有限公司
地址由100028 北京市朝阳区京顺路5号曙光大厦C座207室变更为100027 北京市朝阳区霞光里5号301室
- 2018-07-06
- 2016-01-27
实质审查的生效
IPC(主分类): G06F 11/36
专利申请号: 201410268376.0
申请日: 2014.06.16
- 2015-12-30
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-08-14
|
2012-02-09
| | |
2
| |
2013-06-26
|
2013-02-27
| | |
3
| |
2013-04-24
|
2013-01-23
| | |
4
| |
2007-02-07
|
2005-08-05
| | |
5
| |
2014-03-26
|
2013-12-19
| | |
6
| |
2010-12-08
|
2010-07-15
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |