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

时间:2011-09-07 15:25:32

标签: statistics monitoring

假设我有一堆网络服务器,每个服务器提供100个请求/ s,我想看到如下实时统计数据:

  • 请求率超过5s,60s,5分钟等
  • 每个时间窗口再次看到的唯一身份用户数

或者一般来说,对于一堆带时间戳的事件,我希望看到实时派生的统计数据 - 最好的方法是什么?

我已经考虑过让每个GET请求在某个地方更新一个全局计数器,然后以不同的间隔对其进行采样,但是在事件发生率下我很难得到一个足够快的分布式计数器。

欢迎任何想法!

补充:服务器是运行Apache / mod_wsgi的Linux,带有Python(Django)堆栈。 补充:为了了解我想跟踪统计数据的事件率,他们将以超过10K的事件/秒进入。即使按此速率递增分布式计数器也是一项挑战。

4 个答案:

答案 0 :(得分:1)

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

您使用的是哪种Web或应用程序服务器?没有这些信息很难提供解决方案。

答案 1 :(得分:1)

使用WebSockets,它们的开销远小于HTTP请求,它们非常适合实时Web应用程序。请参阅:http://nodeknockout.com/了解基于节点的websocket示例。

http://en.wikipedia.org/wiki/WebSocket

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

另请看一下: http://kaazing.com/如果你不那么麻烦,但愿意掏出现金。

http://websocket.org/img/poll-ws-compare.gif

答案 2 :(得分:1)

您可能希望帮助我们在Python Web应用程序中试用我们的代理程序以进行应用程序性能监控。

http://newrelic.com

它更深入地研究应用程序性能而不仅仅是Web服务器,但由于任何瓶颈都不会生成为Web服务器,但是您的应用程序无论如何都会更有用。

声明。我为New Relic工作,这是我正在进行的项目。它是付费产品,但测试版意味着它现在免费提供所有功能。稍后当这种情况发生变化时,如果您不想付费,它们仍然是免费的Lite订阅级别,它为您提供基本的Web指标报告,这些报告仍然涵盖了您所追求的一些内容。无论如何,现在就是利用它来调试你的表现的好机会。

答案 3 :(得分:0)

在Windows方面,Perfmonance monitor是您应该调查的工具。

正如Jared O'Connor所述,您应该确定要监控的Web服务器类型。