【问题标题】:Requests per second, per hour, per day out of a time series时间序列中每秒、每小时、每天的请求数
【发布时间】:2012-12-25 11:53:35
【问题描述】:

我对 R 比较陌生,这是我第一次尝试使用它来实际分析一些数据。问题如下:我有一个 CSV 文件,其中包含为给定系统提供服务的请求数量的日志,格式如下:

# Unix timestamp, number of requests
1354810257,241624
1354810258,244759
1354810259,245307
1354810260,248961

目前该文件包含与一周时间段相关的信息。现在我需要获取一个图表,显示系统每秒、每小时和每天能够维持多少请求。

【问题讨论】:

  • 请求数实际上是一个单调递增的序列。
  • 如果这是真的,那么应该可以使用开始值和结束值之间的差异来按秒、小时和日期进行聚合。 @nopper 需要为测试提供更好的示例,并且需要阐明他的数据的潜在含义..
  • 整个 CSV 文件是从监控节点集群的 Graphite 服务器中提取的。这里的请求数代表集群本身处理的项目数。想象它们是 HTTP 请求的数量,集群是一个 HTTP 服务器。我需要的是类似于 stackoverflow.com/questions/5034513/… 的东西,唯一的区别是我需要每天、每小时和每秒的统计数据来了解系统的性能。

标签: python r time ggplot2


【解决方案1】:

我使用 Python 和 matplotlib 解决了这个问题。代码是这样的:

import csv
from pylab import *
from itertools import groupby

def by_hour(value):
    return value[0] // 3600

def plot_data_for(data, map_, reduce_):
    keys = []
    values = []
    for k,v in groupby(data, key=map_):
        keys.append(k)
        values.append(reduce_(v))
    return (keys, values)

times = []
requests = []
reader = csv.reader(open("results.csv"))

for row in reader:
    times.append(int(row[0]))
    requests.append(int(row[1]))

increments = map(lambda x: x[1] - x[0], zip(requests, requests[1:] + [requests[-1]]))
plot(*plot_data_for(zip(times, increments), by_hour, lambda values: sum(map(lambda x: x[1], values))))

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2015-03-04
    相关资源
    最近更新 更多