WEB服务器日志分析工具
南京都昌信息科技有限公司 袁永福 2020-6-18
本文中配套的C#源代码下载地址”https://files.cnblogs.com/files/xdesigner/DCWebLogDemo2020-6-23.zip”
》》前言
一些BS系统运行缓慢但长期得不到解决,这是很多IT部门面临的老大难的问题,此时堆砌服务器硬件没多大效果,必须改进软件本身才能根治问题。
而一个大型的基于WEB的应用软件,可能包含数百万行代码,数百个页面,几十个对外接口。在其中快速精确的定位错误点或者性能瓶颈,这是大海捞针的任务。如果没有有力的辅助软件工具,这是一个很耗时间的操作,这可能会导致项目延期,侵蚀软件公司的利润,消磨客户的耐心。
而本文就提出这个问题的一种解决方法。
》》现状
在目前的BS系统的开发和运维中,遇到WEB服务器软件的性能调优和错误排查的一个重要技术手段就是对WEB服务器日志的事后分析。例如目前很多系统是用ASP.NET开发,运行在IIS中,而IIS的日志文件格式大体如下图所示:
JAVA或者PHP服务器都有类似的日志文件。如果手工查看这种日志文件将非常艰巨,是不可持续的工作。此时微软提供LPS工具对日志文件进行查询分析,其界面如下图所示:
这也能减轻一点工作量,但仍然还有大量的手工操作,工作效率还是低下。
》》都昌WEB服务器日志分析工具
我们南京都昌团队专业从事生产力工具的研发推广,立志赋能整个HIT行业。行业内有大量的来自不同公司的实施团队反馈遇到WEB服务器日志分析的难题。结合我们自身的WEB版电子病历编辑器的实际需求,特别开发了WEB服务器日志分析工具。其界面如下:
这个界面主要分为两个部分
第一,功能模块总体统计数据,其界面如下:
这个表格各列的说明如下:
第一列,这是一个颜色主题列,对于各个功能模块,分配不同的颜色。颜色主题有6个颜色,循环分配。
第二列,是各个软件模块的名称,一般而言就是WEB服务器页面的名称,不含路径名。一些页面功能很多,可以将一个页面拆分成多个模块来显示。
第三列,是在整个统计时间区间中功能模块的执行总次数。此时数值具有浅红色背景进度条。以该列中最大值为基准,各个单元格的浅红色进度条的宽度等比于该单元格数值相对最大值的百分比。
第三列,是该功能模块第一次调用和最后一次调用的时刻。
第四列,该模块的累计运行所消耗的CPU毫秒数,该栏有浅红色背景进度条。注意,这里是真正消耗CPU核心的毫秒数,而不是运行耗时。
WEB服务器都采用多线程的方式来同时并发执行多个页面模块,则页面的运行耗时是超过CPU消耗时长。服务器越繁忙,运行模块的线程受到的干扰越大,这个时间差距越大。从软件模块性能调优来说,CPU耗时要比页面运行耗时科学。更能帮助快速准确的定位性能瓶颈。聚焦CPU耗时是本软件工具的一大特色。
第五列,该模块最大一次的CPU耗时毫秒数。
第六列,该模块最小的一次CPU耗时毫秒数。
第七列,该模块平均CPU耗时毫秒数。
第八列,列出该模块的HTTP请求的数据量,包括最大值、最小值和平均值。
第九列,列出该模块的HTTP响应返回的数据量,包括最大值、最小值和平均值。
本软件工具第二部分界面如下:
该表格各个栏目说明如下:
第一列,记录时刻,以秒为单位。如果出现错误,则单元格为红色。鼠标移上去有错误提示文本。例如:
第二列,CPU核心占用情况。标题中列出最大的占用率。如果超过100%,表示某个时刻有多个CPU核心用于处理WEB请求。该列中内容列出本秒中各个模块的CPU核心占用率。水平层叠了多个色块,色块的颜色和第一个表格的模块的主题色对应。色块宽度表示了CPU核心占用率,鼠标移上去就会显示如下的提示文本:
该提示文本列出的该模块在本秒钟的同时处理次数和消耗CPU毫秒数。下面还列出各个请求的页面参数和单次CPU耗时。
通过这种色块叠加,各个功能模块的CPU耗时情况一目了然,可以快速找到性能瓶颈。同时也能帮助理解WEB服务器高峰时的运行情况
例如下图的一个分析结果:
在时刻01:06:58。CPU核心使用率高达1500%。另外紧跟着"持续24"秒,表示这个高能耗状态持续了24秒,这是一个比较严重的CPU长期占用情况。是一个性能瓶颈,需要做针对性处理。
第三列,列出各个模块HTTP请求的上传数据量。标题列出最大数据传输速度。各个色块表示了数据量。鼠标移上去会显示如下的提示文本:
该提示文本列出了模块的名称和各次请求的参数和上传数据量。
第四列,列出了各个功能的下载(HTTP响应输出)的数据量信息。
第五列列出了WEB服务器软件的内存占用情况。也是有浅红色背景进度条。
第六列,列出了ASP.NET SESSION数量。也就是同时连接WEB服务器的客户端数量。
第七列,列出了当前DCWriter授权的并发数。
第八列,列出了CPU使用率。叠加了红色块和浅绿色块。红色块表示WEB服务器进程(可能为c:\windows\system32\svchost.exe –k iissvcs)的CPU使用率。这个使用率已经包括了多核CPU的情况。浅绿色表示操作系统中返回的CPU使用率。鼠标移上去会显示如下提示文本:
在这里,25%为WEB服务器进程的CPU使用率,34%是操作系统的CPU使用率。操作系统的CPU使用率包含了WEB服务器进程的CPU使用率。
》》应用
本软件工具的完整版可提供在线实时分析而无需导出IIS日志文件。目前只支持ASP.NET/ASP.NET Core开发,只需要引用都昌公司提供的DCSoft.Writer.dll,然后编写以下代码即可完成记录操作。
对于ASP.NET CORE需要在Startup.cs中添加以下代码:
使用以下代码即可进行数据分析,生成报表:
也可访问都昌控件服务器页面地址查看当前实时分析数据。比如"http://server/app/svp.aspx?serverlog=1"。
》》分析IIS日志文件
本软件工具可用于分析IIS日志文件,其分析结果如下:
由于IIS日志中最关键的页面运行耗时是采用时间差,而不是CPU耗时,因此在本报表中关于CPU耗时的计算有误差。但也比微软LPS工具好用多了。
获取本工具软件,请访问网站【http://www.dcwriter.cn】。