Statistics 为高负载Web服务器创建实时统计数据的好方法是什么?

Statistics 为高负载Web服务器创建实时统计数据的好方法是什么?,statistics,monitoring,Statistics,Monitoring,假设我有一组Web服务器,每台服务器提供100个请求,我希望看到实时数据,如: 过去5秒、60秒、5分钟等的请求速率 每个时间窗口再次看到的唯一用户数 或者,一般来说,对于一组时间戳事件,我想查看实时派生的统计数据-最好的方法是什么 我考虑过让每个GET请求在某个地方更新一个全局计数器,然后在不同的时间间隔对其进行采样,但从事件速率来看,很难获得足够快的分布式计数器 欢迎有任何想法 添加:服务器是运行Apache/mod_wsgi的Linux,带有Python(Django)堆栈。 补充:为

假设我有一组Web服务器,每台服务器提供100个请求,我希望看到实时数据,如:

  • 过去5秒、60秒、5分钟等的请求速率
  • 每个时间窗口再次看到的唯一用户数
或者,一般来说,对于一组时间戳事件,我想查看实时派生的统计数据-最好的方法是什么

我考虑过让每个GET请求在某个地方更新一个全局计数器,然后在不同的时间间隔对其进行采样,但从事件速率来看,很难获得足够快的分布式计数器

欢迎有任何想法

添加:服务器是运行Apache/mod_wsgi的Linux,带有Python(Django)堆栈。
补充:为了让我了解我想要跟踪统计数据的事件率,它们以超过10公里/秒的速度出现。即使以这样的速度增加分布式计数器也是一个挑战。

几乎所有好的服务器都提供这种开箱即用的功能。例如,Apache有mod_状态模块,Glassfish支持JMX。此外,还有许多用于监控集群的商业软件包,如Hyperic和Zenoss

您使用的是什么web或应用程序服务器?如果没有这些信息,很难提供解决方案。

在Windows方面,这是您应该研究的工具


如前所述,您应该确定要监视哪种web服务器。

看看使用WebSocket,它们的开销比HTTP请求小得多,非常适合实时web应用程序。有关基于节点的websocket示例,请参见

如果要在apache服务器上运行守护程序,则需要运行守护程序

另请看: 如果你不想减少麻烦,但愿意掏钱的话


您可能希望帮助我们试用Python web应用程序中应用程序性能监控代理的beta版

它深入研究了应用程序的性能,而不仅仅是web服务器,但由于任何瓶颈都不会产生在web服务器上,而是在您的应用程序上,因此无论怎样,这都会更有用


免责声明。我为New Relic工作,这是我正在从事的项目。这是一款付费产品,但beta版意味着它现在所有功能都是免费的。后来,当这种情况发生变化时,如果你不想为此付费,他们仍然是一个免费的Lite订阅级别,为你提供基本的web度量报告,其中仍然包括你所追求的一些内容。无论如何,现在将是一个很好的机会,可以利用它来调试您的性能。

更多的是监视和整理业务级别的指标,例如唯一用户(AFAIK、Apache不能这样做)或其他任意事件。我所看到的大多数集群监视器都会以10K事件/秒的速度运行,这就是我要处理的问题。我不知道WebSocket如何帮助实现这一点。问题不在于我不能处理10K req/s(我可以),而在于监控在这种规模上发生的事情是一个非常困难的问题challenge@Malcolm我不确定你到底想实现什么,但是。。。如果您使用Node.js(一个事件驱动平台,所有代码都是异步的),您可以实时跟踪所有这些请求,并在需要时存储它们。谢谢。在我们尝试newrelic时接受您的答案,尽管这并不是我们想要的,但它似乎是一个不错的工具,可以满足问题的要求。