CN109783320A - 一种对服务器工作压力的直观化监测方法和装置 - Google Patents
一种对服务器工作压力的直观化监测方法和装置 Download PDFInfo
- Publication number
- CN109783320A CN109783320A CN201910044802.5A CN201910044802A CN109783320A CN 109783320 A CN109783320 A CN 109783320A CN 201910044802 A CN201910044802 A CN 201910044802A CN 109783320 A CN109783320 A CN 109783320A
- Authority
- CN
- China
- Prior art keywords
- flame
- monitoring
- processor
- cpu
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及对服务器工作压力的直观化监测方法和装置。其中方法包括步骤:A、收集一时段内的多个进程的CPU占用率信息,并进行解析折叠;B、将收集到的进程和CPU信息生成火焰图。其中装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法步骤。本发明基于传统的火焰图的监控方式进行改进,采用临时文件和进程关联方式来可视化监控服务器的工作压力,提高效率,节省时间。
Description
技术领域
本发明涉及一种对服务器工作压力的直观化监测方法和装置,属于服务器监控技术领域。
背景技术
在Linux系统下,现有的可视化监控服务器比较复杂,收集数据和实现可视化分为两步,要想在服务器上生成关于服务器信息的火焰图,需先把数据收集起来,然后下载火焰图生成工具再生成火焰图。
以现有技术为例,采用例如使用Linux系统中的perf工具,要得到性能火焰图,通常有以下几步:第一步:$sudo perf record-e cpu-clock-g-a;Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.;第二步:用perf script工具对perf.data进行解析;perf script-i perf.data&>perf.unfold;第三步:将perf.unfold中的符号进行折叠:#./stackcollapse-perf.pl perf.unfold&>perf.folded。第四步:生成svg图:./flamegraph.pl perf.folded>perf.svg。
技术人员在采用上述步骤生成火焰图直观地观察服务器性能时需要操作多个步骤,在这些繁琐的步骤上会浪费大量的时间,工作效率低。
发明内容
本发明提供一种对服务器工作压力的直观化监测方法和装置,基于传统的火焰图的监控方式进行改进,基于临时文件和进程关联的方式来可视化监控服务器的工作压力,同时免去拉取临时文件到程序当前目录,提高效率,节省时间。
本发明的技术方案第一方面为一种对服务器工作压力的直观化监测方法,所述方法包括以下步骤:A、收集一时段内的多个进程的CPU占用率信息,并进行解析折叠;B、将收集到的进程和CPU信息生成火焰图。
进一步,所述步骤A包括:将基于临时文件中的监控文件的磁盘占用率通过数据、条形图或者颜色块的展示方式,整合到火焰图中的关联进程中。
进一步,所述步骤A还包括:收集每个进程的内存占用率,并通过数据、条形图或者颜色块的展示方式整合到火焰图中的关联进程中。
进一步,所述步骤B包括:利用批处理脚本,对多个自定义监控的进程获取生成火焰图。
进一步,所述步骤B包括:将脚本文件stackcollapse-perf.pl和flamegraph.pl封装到所述的批处理脚本中,并且在运行所述批处理脚本时生成临时文件夹并从中拉取的脚本文件stackcollapse-perf.pl和flamegraph.pl来生成火焰图。
进一步,所述步骤B还包括:如果监测到服务器的CPU压力低于第一阈值,则延长进程的信息收集间隔;如果监测到服务器的CPU压力高于第二阈值,则缩短进程的信息收集间隔。进一步,所述的方法,还包括步骤C、每隔预设的时间清除运行过程中的冗余数据。
本发明的技术方案第二方面为一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
本发明的技术方案第三方面为一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明的有益效果为:采用临时文件和进程关联方式来可视化监控服务器的工作压力,提高效率,节省时间。
附图说明
图1所示为根据本发明的方法的总体流程图。
图2所示为根据本发明的实施例中的火焰图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
参考图1。根据本发明的方法可以用于对服务器工作压力的直观化监测。该方法包括以下步骤:A、收集一时段内的多个进程的CPU占用率信息,并进行解析折叠;B、将收集到的进程和CPU信息生成火焰图。
根据本发明的方法,可以不用执行现有技术(参照本文背景技术内容)中的步骤三、四需下载flamegraph从中获取脚本文件stackcollapse-perf.pl和flamegraph.pl的步骤。本发明的方法中,可以将这两个脚本封装到脚本里,运行本发明时会生成临时文件夹并从中拉取所需的脚本文件来生成火焰图。
进一步,在步骤A中,例如可以将基于临时文件夹中的监控文件的磁盘占用率通过数据、条形图或者颜色块的展示方式,整合到火焰图中的关联进程中。例如还可以收集每个进程的内存占用率,并通过数据、条形图或者颜色块的展示方式整合到火焰图中的关联进程中。
在步骤B中,例如可以利用批处理脚本,对多个自定义监控的进程获取生成火焰图。优选地,如果监测到服务器的CPU压力低于第一阈值,则延长进程的信息收集间隔;如果监测到服务器的CPU压力高于第二阈值,则缩短进程的信息收集间隔。
在另一个实施例中,从临时文件夹中拉取所需的文件到当前目录;收集S秒(例如S=60)某个进程的CPU信息并进行解析折叠。然后将收集到的信息生成火焰图,在批处理脚本的命令行加入./perf_gen_flame-s 60,可以让生成本机60秒内的CPU火焰图。最后清除运行过程中的冗余数据。可以理解到,上述操作每运行完一步都会产生对应的文件,但是只有最后一步产生的可视化火焰图文件才是所需的,其他的文件在产生火焰图后已经没有意义了,所以可以清除掉。这样既美观也节省了空间,同时也避免了再次运行时因为文件名冲突所可能产生的问题。
在另一个实施例中,可以参考以下代码脚本,批量化获取与活跃的临时文件关联的进程、或者是服务器关键进程的火焰图:
drawing flame graph
{
./perf_gen_flame-s 20-p 9923
//参数说明:
//-s持续多少秒(默认10秒)
//-p收集pid(进程的ID号,例如9923)为多少的进程(默认整个系统)
}
生成的火焰图可以参考图2。整个图形看起来就像一团跳动的火焰,这也正是其名字的由来。燃烧在火苗尖部的就是CPU正在执行的操作,纵向表示调用栈的深度,横向表示消耗的时间。因为调用栈在横向会按照字母排序,并且同样的调用栈会做合并,所以一个格子的宽度越大越说明其可能是瓶颈。
此外还可以收集每个进程的内存占用率,并通过数据、条形图或者颜色块的展示方式整合到火焰图中。基于图2的实例,可以采用了颜色的作为进程内存占用率的指示。
上述实例的优点在于:1.无需下载FlameGraphs即可使用它来生成火焰图;2.整合多个工具实现一键监控。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (9)
1.一种对服务器工作压力的直观化监测方法,其特征在于,所述方法包括以下步骤:
A、收集一时段内的多个进程的CPU占用率信息,并进行解析折叠;
B、将收集到的进程和CPU信息生成火焰图。
2.根据权利要求1所述的方法,其特征在于,所述步骤A包括:
将基于临时文件中的监控文件的磁盘占用率通过数据、条形图或者颜色块的展示方式,整合到火焰图中的关联进程中。
3.根据权利要求1所述的方法,其特征在于,所述步骤A还包括:
收集每个进程的内存占用率,并通过数据、条形图或者颜色块的展示方式整合到火焰图中的关联进程中。
4.根据权利要求1所述的方法,其特征在于,所述步骤B包括:
利用批处理脚本,对多个自定义监控的进程获取生成火焰图。
5.根据权利要求1所述的方法,其特征在于,所述步骤B包括:
将脚本文件stackcollapse-perf.pl和flamegraph.pl封装到所述的批处理脚本中,并且在运行所述批处理脚本时生成临时文件夹并从中拉取的脚本文件stackcollapse-perf.pl和flamegraph.pl来生成火焰图。
6.根据权利要求1或4所述的方法,其特征在于,所述步骤B还包括:
如果监测到服务器的CPU压力低于第一阈值,则延长进程的信息收集间隔;
如果监测到服务器的CPU压力高于第二阈值,则缩短进程的信息收集间隔。
7.根据权利要求1所述的方法,其特征在于,还包括步骤:
C、每隔预设的时间清除运行过程中的冗余数据。
8.一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任一权利要求所述的方法的步骤。
9.一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7中任一权利要求所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044802.5A CN109783320A (zh) | 2019-01-17 | 2019-01-17 | 一种对服务器工作压力的直观化监测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044802.5A CN109783320A (zh) | 2019-01-17 | 2019-01-17 | 一种对服务器工作压力的直观化监测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109783320A true CN109783320A (zh) | 2019-05-21 |
Family
ID=66501619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910044802.5A Pending CN109783320A (zh) | 2019-01-17 | 2019-01-17 | 一种对服务器工作压力的直观化监测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783320A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170322859A1 (en) * | 2016-05-05 | 2017-11-09 | Ebay Inc. | Cpu performance profiling |
CN107911410A (zh) * | 2017-10-17 | 2018-04-13 | 珠海金山网络游戏科技有限公司 | 分布式服务进程资源耗用统计方法和装置 |
-
2019
- 2019-01-17 CN CN201910044802.5A patent/CN109783320A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170322859A1 (en) * | 2016-05-05 | 2017-11-09 | Ebay Inc. | Cpu performance profiling |
CN107911410A (zh) * | 2017-10-17 | 2018-04-13 | 珠海金山网络游戏科技有限公司 | 分布式服务进程资源耗用统计方法和装置 |
Non-Patent Citations (1)
Title |
---|
网友: ""Linux下用火焰图进行性能分析"", 《HTTPS://BLOG.CSDN.NET/GATIEME/ARTICLE/DETAILS/78885908》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101314949B1 (ko) | 통합 환경 생성기 | |
US20110083125A1 (en) | Parallelization processing method, system and program | |
CN107689982B (zh) | 多数据源数据同步方法、应用服务器及计算机可读存储介质 | |
CN107273122A (zh) | 基于解耦机制的可迭代组建业务系统的方法及其终端 | |
CN101917286B (zh) | 互联网应用系统中实现跨浏览器的Web性能分析系统及方法 | |
CN106502720B (zh) | 一种数据处理方法和装置 | |
US20140282412A1 (en) | System And Method For Automatic Generation Of Software Test | |
CN104572644A (zh) | 数据库更新装置和数据库更新方法 | |
JP2007316905A (ja) | アプリケーションプログラムを監視する計算機システム及びその方法 | |
CN109918075A (zh) | 利用打包插件的sdk打包方法、打包插件及相应终端 | |
CN104598570A (zh) | 资源的抓取方法及装置 | |
CN111897548A (zh) | 前端资源发布方法、装置、电子设备及计算机存储介质 | |
CN110674083A (zh) | 工作流迁移方法、装置、设备及计算机可读存储介质 | |
CN105210044B (zh) | 程序分析装置和程序分析方法 | |
CN109670129A (zh) | 一种将html网页转为适配mip格式的方法及装置 | |
CN110334001A (zh) | 一种批量自动生成回声测试的方法和装置 | |
CN110941422B (zh) | 代码自动生成方法、代码生成器及可读存储介质 | |
CN101495978A (zh) | 减少总线连接的消费者和产生者之间的消息流 | |
CN109783320A (zh) | 一种对服务器工作压力的直观化监测方法和装置 | |
CN110287154A (zh) | 容器日志的查询方法及装置 | |
CN109542953A (zh) | 基于presto的数据处理方法及装置 | |
CN109857397A (zh) | 项目构建的方法、装置和存储介质 | |
CN108132883A (zh) | 一种软件测试数据分析方法、装置、系统及存储介质 | |
CN104660697B (zh) | 基于Kepler科学工作流传感网服务组合方法 | |
KR20160031807A (ko) | 스프레드시트 기반 빅데이터 분석 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190521 |