代码之家  ›  专栏  ›  技术社区  ›  Brent.Longborough

如何可靠地检测异常资源消耗?

  •  2
  • Brent.Longborough  · 技术社区  · 17 年前

    这个问题是关于一整类类似的问题,但我会问它作为一个具体的例子。

    它实际上并不重要——例如,它可能是一个“工作”队列。

    在“正常”操作期间,可用空间在“正常”范围内变化,但可能存在以下病理情况:

    • 其他一些(可能是外部的) 添加工作的组件可能会耗尽

    这个过程的统计特征基本上是未知的。

    我很欣赏有其他解决方案,比如在底层问题上投入更多的存储空间,但我确实遇到过1000次还不够的情况。

    考虑存储的历史测量的算法是好的,虽然在飞行中最小化历史数据量的算法是优选的。


    我认为有三种情况值得关注,但不符合顺序:

    1. “哈罗德拍卖会刚刚开始”的场景:活动的高峰在一秒钟的分辨率下是“非刻度盘”,但并不代表资源枯竭的真正危险;
    2. “全球变暖”情景:需要规划(相对)稳定的增长;和
    3. “谷歌正在给我发送一份未经请求的索引副本”场景:这将在相对较短的时间内耗尽我的所有资源,除非我采取措施阻止它。

    1 回复  |  直到 17 年前
        1
  •  1
  •   frankodwyer    17 年前

    对于一般情况,您可能可以尝试对历史数据进行(多元?)线性回归,以检测资源使用量是否存在统计上显著的上升趋势,如果这种趋势持续下去,可能会导致问题(您还可以预测这种技术必须持续多久才能导致问题——只需为“问题”设置一个阈值,并使用趋势的斜率来确定需要多长时间).你必须处理好这个问题和你收集的变量,看看是否有任何统计上的显著关系,你可以在第一时间发现。

    虽然它涵盖了一个完全不同的主题(全球变暖),但我发现塔米诺的博客(tamino.wordpress.com)是一个非常好的资源,可以对充满已知和未知的数据进行统计分析。例如,请参见 this 邮递

    编辑:根据我的评论,我认为这个问题有点类似于GW问题。你有短期的突发性活动,平均为零,长期趋势叠加在一起,你感兴趣。此外,长期趋势可能不止一种,而且会不时发生变化。塔米诺描述了一种可能适用于此的技术,但不幸的是,我找不到我想到的帖子。它涉及沿数据滑动回归(想象多条线拟合到噪声数据),并让数据选择拐点。如果你能做到这一点,那么你可能会发现趋势中的重大变化。不幸的是,它可能只有在事实发生后才能被识别,因为你可能需要积累大量的数据来获得意义。但这可能仍然是阻止资源枯竭的时候。至少它可以为您提供一种可靠的方法,以确定您将来需要什么样的安全裕度和储备资源。

    推荐文章