使用 LogParser 生成平均响应时间图

使用 LogParser 生成平均响应时间图

我如何获得该图表:

(从加速 StackExchange

它显示了耗时超过 N 秒的 Web 请求百分比。我已安装 IIS 日志和 LogParser,但不确定如何继续。

答案1

使用 LogParser 和 Excel 可以做到这一点:

步骤1创建以下查询并将其保存为“Time taken graph.sql”:

SELECT QUANTIZE(time-taken, 100) AS t, COUNT(*) as count
INTO 'Time-taken-graph.csv'
FROM u_ex*.log GROUP BY t

第2步运行查询并将结果导出到 CSV 文件:

LogParser.exe file:"Time taken graph.sql"

步骤3在 Excel 中打开 CSV 文件。我将使用 Excel 2010 作为示例。
假设您的数据位于 A1:B401 范围内:

初始数据

在 D1 单元格中输入“时间”。在 E1 单元格中输入“百分比”。在 D 列中填写时间,范围从 0 到 5,步长为 0.1:

时间序列

步骤4将以下公式放入 E2 单元格(您需要将 401 替换为您的值):

=SUMIF($A$2:$A$401,">="&D2*1000,$B$2:$B$401)/SUM($B$2:$B$401)

公式

将公式复制到 E 列中具有相应时间值的所有单元格。按 Ctrl+Shift+% 将样式设置为百分比

步骤5最后,根据D、C列的数据绘制折线图: 图形

答案2

我编写了一个 Python 程序,使用我们的负载均衡器生成的日志来生成该图表,浮标绘制实际图形。

在决定使用这个图表之前,我经历了几次迭代:

  • 我从一个散点图(响应时间与一天中的时间)开始,它本身就很有信息量,即使它对于沟通来说不是特别有用,也能让你很好地了解流量的形状和变化。

  • 然后我尝试了直方图,但由于方差较大,所以它并不是特别有用。

  • 最后我得到了这个基于直方图但却是累积和倒置的图。

我本来想发布代码,但它太具体了,无法帮助任何人。以下是核心函数的近似值:

def point(times, cutoff):
    """
        times: sorted list of response times
        0 <= cutoff < 1
    """

    size = int(len(times) * cutoff)
    return (times[cutoff], 1 - cutoff)

然后,您可以使用您最喜欢的绘图库(x, y)将坐标绘制为截止范围。[0,1[

相关内容