分析php应用软件性能的诊断系统及其方法和性能管理平台的制作方法

【技术领域】

[0001]本发明涉及软件应用性能管理(AMP)技术,尤其涉及一种分析超文本预处理器(Hypertext Preprocessor, PHP)应用软件性能的诊断系统及其方法和性能管理平台,适用于利用PHP语言搭建的HTTP(S)服务器的应用软件性能管理(AMP)领域。

【背景技术】

[0002]PHP,是一种开源的通用计算机脚本语言,适用于网络开发并可嵌入超文本标记语言(HTML)中使用。同时,PHP还是一种服务器端技术,应用PHP语言在服务器端边解释边执行,程序员不需进行编译就可以直接阅读HTML内容,即其源代码不需要进行二进制编译过程,就可以直接放在服务器上由PHP解释器运行。

[0003]为了监控WEB服务器应用软件的性能,现在发展出了一类应用软件性能监测工具,利用该类应用软件性能监测工具能够通过追踪HTTP的请求过程记录应用软件的性能、网络信息和故障等数据。该类工具具有从服务器外部启动、模拟用户发起网络请求、不针对具体服务器编程语言等的特性。

[0004]但是,这类工具存在如下缺点:1)模拟用户发起请求时,如果采样数量少,数据就会不准确;如果采样数量大,又会对服务器造成额外的压力;2)仅能记录应用软件的总响应性能,无法更深入地追踪到代码级别,而且在服务器性能出现问题时又无法定位具体原因。

[0005]为了弥补以上这类软件性能监测工具的技术缺陷,通常在运行PHP语言的服务器上引入其他软件工具,如XHProf工具,利用该XHProf工具对应用服务器的性能进行代码级监控。该XHProf工具能够记录应用软件内部所有函数的调用起止时间及其开销数据,开发人员可以通过在PHP页面内部嵌入XHProf工具提供的接口代码的方式进行调用,产生的监控结果通常保存在服务器的本机硬盘上,最后再由运维人员通过查看单点报表或使用批处理工具对得到的数据进行汇总。

[0006]例如,公开号为CN103049385A,名称为“一种云环境下的PHP代码调试方法及系统”的发明申请,就描述了开发人员如何利用接口代码调用XHProf及整合数据的技术,体现了该类工具在应用软件性能监控领域实施的不便。

[0007]综上所述,该类借助XHProf工具对应用软件的性能进行代码级监控的技术,存在如下不足:1)其实施过程仍然需要开发人员的介入,不能实现自动监控;2)必须在每个需要监控的页面内嵌入XHProf工具提供的接口代码;3)仅能监控性能数据,无法提供故障信息;4)性能数据不直观,只有函数名称及其对应性能,不能按照其用途进行分类,使绝大多数缺乏专业技能的人员很难知晓所得到的数据的含义。

【发明内容】

[0008]有鉴于此,本发明的主要目的在于提供一种分析PHP应用软件性能的诊断系统及其方法和性能管理平台,使其高效、直观地分析PHP应用软件的性能,以克服现有的工具缺少性能数据分类和缺少故障信息等技术缺陷。

[0009]本发明的另一个目的在于利用上述的诊断系统和诊断方法,实现一种无需开发人员介入即可自动对PHP应用软件进行深入代码级别的应用性能管理平台,并能够根据不同的应用软件名称或依据不同的请求URL即可从该性能管理平台自动读取动态的应用设置,对PHP应用进行性能诊断。

[0010]为达到上述目的,本发明的技术方案是这样实现的:

一种分析PHP应用软件性能的诊断系统,主要包括PHP引擎I和监控子系统2 ;其中,PHP引擎1,主要包括执行用户代码的模块11、执行扩展代码的模块12和处理故障逻辑的模块13 ;

监控子系统2,用于在PHP执行引擎启动后通过设置所述监控子系统2监控PHP引擎I的执行用户代码的模块11、执行扩展代码的模块12和处理故障逻辑的模块13,以监控软件代码的执行过程和处理故障信息,然后对采集到的性能数据和参数信息进行汇总并输出。

[0011]一种分析PHP应用软件性能的诊断方法,包括如下步骤:

A、在PHP执行引擎启动时设置监控子系统;

B、在处理HTTP(S)请求的过程中,利用监控子系统监控软件代码的执行过程和处理故障信息;

C、在PHP执行引擎退出前卸载监控子系统。

[0012]其中,步骤A所述设置监控子系统具体包括:

当PHP启动时,PHP引擎将所有已加载扩展的初始化MINIT方法都执行一遍,然后在PHP_MINIT_FUNCT1N宏函数内实现设置监控函数。

[0013]其中,步骤B所述利用监控子系统监控软件代码的执行过程,主要包括:

B1、在HTTP (S)请求开始时,依据不同的应用软件名称或依据不同的请求URL读取动态的应用设置,在开启分析开关的条件下设置用户代码回调函数;

B2、执行引擎循环进入下述不同的监控函数,直至应用代码执行完毕;

B3、在HTTP请求结束时记录HTTP响应的状态信息,保存分类的性能数据、故障信息和代码执行过程数据。

[0014]其中,所述步骤B2具体包括:

B21、监控执行用户代码的函数的过程,包括:依据用户代码函数的名称对应用程序使用的框架进行归类;依据用户代码函数的实参对HTTP (S)请求进行命名;计算用户代码的执行性能;根据配置参数记录代码的执行过程;

B22、监控执行扩展代码的函数的过程,依据扩展代码函数的名称进行组件类别归类和操作性能汇总;

B23、监控处理故障逻辑的函数的过程,记录故障发生的类别和详细信息。

[0015]所述步骤B21进一步包括:

用户代码执行完毕后,监控函数再次读取当前HTTP (S)请求的分析开关状态,如果分析开关处于关闭状态,则直接退出此段代码的监控;如果分析开关处于开启状态,则记录代码返回时间,并且计算此段代码的总执行时间。

[0016]所述步骤B22进一步包括: 待扩展代码执行完毕后,监控函数再次读取当前HTTP (S)请求的分析开关状态,如果分析开关处于关闭状态,则直接退出此段代码的监控;如果分析开关处于开启状态,则记录代码返回时间,并且计算此段代码的总执行时间,然后通过函数名称检查当前扩展代码是否对应易于出现性能的外部组件;如果当前代码对应相应组件,则累计当前请求的外部组件及其操作性能。

[0017]其中,在所述步骤B21、步骤B22中使用哈希映射的机制处理归类,以降低引入监控函数对应用程序的性能影响。

[0018]一种包含权利要求1所述分析PHP应用软件性能的诊断系统的性能管理平台。

[0019]一种采用权利要求2?8所述分析PHP应用软件性能的诊断方法的性能管理平台。

[0020]本发明所提供的分析PHP应用软件性能的诊断系统及其方法和性能管理平台,具有以下优点:

第一,本发明能够依据不同的应用软件名称或依据不同的请求URL从分析PHP应用软件性能管理平台中读取动态的应用设置,从而可以避免研发人员的介入。

[0021]第二,在上述读取动态的应用设置过程中,通过使用多级缓存的应用设置,可以提高分析效率。

[0022]第三,依赖动态的应用设置,用户可选择禁用部分应用程序的分析功能,进一步提高分析效率,并降低了无效数据的干扰。

[0023]第四,通过分析PHP引擎的故障信息,可以提高数据的直观性。

[0024]第五,通过归类的应用框架名称和命名的HTTP (S)请求,以及通过组件类别归类和操作性能汇总,进一步提高了数据的直观性。

【附图说明】

[0025]图1为本发明的分析PHP应用软件性能的诊断系统结构示意图;

图2为本发明的PHP应用软件性能和故障诊断过程示意图;

图3为本发明设置的监控函数执行过程流程图;

图4为本发明设置监控HTTP请求过程流程图;

图5为本发明使用多级缓存的应用配置示意图。

【具体实施方式】

[0026]下面结合附图及本发明的实施例对本发明的分析PHP应用软件性能的诊断系统及其方法和性能管理平台作进一步详细的说明。

[0027]图1为本发明的分析PHP应用软件性能的诊断系统结构示意图。如图1所示,该诊断系统,主要包括PHP引擎I和监控子系统2。其中,监控子系统2,主要包括监控执行用户代码的模块21、监控执行扩展代码的模块22和监控处理故障的模块23。PHP引擎1,主要包括执行用户代码的模块11 (zend_

html不需要编译就可以直接运行,分析php应用软件性能的诊断系统及其方法和性能管理平台的制作方法...相关推荐

  1. 带你一起分析cut the rope(切绳子游戏)中绳子的制作方法

     因为是要模拟物理效果,所以创建工程的时候使用cocos2d ios with Box2D模板.接着,准备一个用来作为绳子片段的图片,例如: rope.png:(4px×2px的一个橙色小方块,如 ...

  2. 编译+构建+链接+运行之间的关系分析

    编译+构建+链接+运行之间的关系分析 源文件+编译+部署+测试+打包 Maven+default: 验证(validate)+编译(compile)+测试(test)+打包(package)+验证(v ...

  3. 借助开源工具高效完成Java应用的运行分析

    不止一次,我们都萌发过想对运行中程序的底层状况一探究竟的念头.产生这种需求的原因可能是运行缓慢的服务.Java虚拟机(JVM)崩溃.挂起.死锁.频繁的JVM暂停.突然或持续的高CPU使用率.甚至于可怕 ...

  4. CTF--PWN必备技能--理解c程序从编译开始到运行结束的过程

    重温c语言 我们在linux平台下建立一个a.c文件,程序很简单,显示输出Please input your name:,然后让我们输入名字,最后调用了一个子函数输出hello,我们的名字 #incl ...

  5. 找不到QtDir变量的解决办法, 同时不需要经过编译就可以使用qt 库

    如果是直接从网上下载的dll文件则不需要编译就可以直接用,如果提示找不到QtDir变量,则直接在系统变量加上即可 同时重新启动计算机,使之生效. 然后把dll文件拷入system32目录下,同时把证可 ...

  6. Eclipse——Maven项目工程无法编译但可以运行解决方案

    问题描述 Maven项目工程无法编译但可以运行. 只能运行上一次成功的版本. 问题分析 pom.xml文件错误. 解决方案 方案一:选中项目 --> 右键 --> Maven --> ...

  7. java通过对.class文件字节码加密,不被轻易反编译出源代码,分析及其实现。

    java通过对字节码加密,不被轻易反编译出源代码. 分析: JVM运行java文件是通过加载.class文件实现程序运行的,而且这个过程被我们称为类加载机制. 执行加载这个动作的是类加载器(java. ...

  8. Java一次编译,到处运行是如何实现的

    Java一次编译,到处运行是如何实现的 转自:https://cloud.tencent.com/developer/article/1415194 (排版微调) JAVA编译运行总览 Java是一种 ...

  9. java 获取文件所在的文件夹_带你0基础编写一个Java小程序,领略Java程序从编写到编译再到运行的全流程...

    在学习Java之前我们需要先认识下什么是计算机语言?计算机语言又有哪些分类?在了解这些后对我们理解学习帮助是很大的. 要知道计算机语言是人与计算机之间进行信息交流沟通的一种特殊语言,又分为机械语言.汇 ...

最新文章

  1. 在 Visual Basic .NET 或 JScript 代码中使用早期绑定
  2. 学习人必看!空军老兵自学编程,仅隔一年成为国土安全部的数据库分析师
  3. TiDB 在威锐达 WindRDS 远程诊断及运维中心的应用
  4. jmap 文件解析_使用jmap dump出来的java堆镜像文件,可以用什么打开做详细分析
  5. cad高程如何提取到cass软件_建筑CAD软件中如何设置墙厚标注? - 数码区
  6. linux退出windows域,删除Windows AD域控制器的三种方法
  7. koa2 中间件里面的next到底是什么
  8. codevs 1576 最长上升子序列的线段树优化
  9. 温州大学c语言作业布置的网站,2016年温州大学物理与电子信息工程学院综合卷之C语言程序设计复试笔试仿真模拟题...
  10. win10无线投屏_原来小米的投屏功能,如此强大,每天都偷偷用,秒杀4k电视
  11. Epicor客制化 - 在VS中进行开发
  12. UBT18:ubuntu安装阿里云盘
  13. QML 导入ttf图标库
  14. rca接口_常用的音频接口及焊接方法
  15. JavaScript XHR使用 JSONPlaceholder API 并本地搭建JSON server REST API
  16. 原来陈寿福进去了~~~
  17. 重庆绮佳火锅诚邀合作
  18. MATLAB函数极限和微分运算
  19. java毕业生设计寻艺画室网站计算机源码+系统+mysql+调试部署+lw
  20. STM32F103CubeMX定时器

热门文章

  1. WEEK8-C-班长竞选
  2. 关于2022年12代C/C++Linux服务器开发高级架构师课程体系分析
  3. PHP仓库进销存管理系统源码 WMS源码
  4. php recursion,php5.1.6情况下,出现RECURSION。求破!!!
  5. Imagenet和wordnet的联系
  6. 基于连续小波变换和GoogLeNet的PCG心音信号分类算法
  7. css实现图片背景填充的正六边形
  8. 计算机试题高考作文阅卷组对考生,福建省建阳一中高三第一次月考语文试卷com 高考(11页)-原创力文档...
  9. 《知识图谱概念与技术》读书笔记:概念图谱中的isA关系
  10. 计算机硬件维修ppt,计算机维修工取证辅导01-计算机硬件基础课件.ppt