2011-09-07 43 views
1

说我有一大堆的每个服务的请求/秒100的Web服务器,我想看到的实时统计,如:什么是创建高负载Web服务器的实时统计信息的好方法?

  • 申请率比去年5秒,60秒,5分钟等
  • 的唯一编号用户在每个时间窗口再次看到

或者对于一组时间戳事件,我希望看到实时导出的统计信息 - 最佳方式是什么?

我认为让每个GET请求某处更新全局计数器,然后取样,在不同的时间间隔,但在事件发生率,我看到它很难得到一个分布式的计数器的速度不够快。

任何想法欢迎!

加了:服务器都运行Linux的Apache/mod_wsgi的,具有一个Python(Django的)堆栈。 添加:为了让我能够追踪统计数据的事件发生率,他们以超过10K事件/秒的速度进入。即使按照这个速度递增分布式计数器也是一个挑战。

回答

1

你可能想帮助我们尝试我们在Python中的Web应用程序性能监控代理的测试版。

http://newrelic.com

再往更到应用程序的性能,而不仅仅是Web服务器,但由于任何瓶颈不会产生将是Web服务器,但您的应用程序,然后将其将会更加有用呢。

免责声明。我为New Relic工作,这是我正在开展的项目。这是一款付费产品,但测试版意味着它现在免费提供所有功能。稍后如果发生变化,如果您不想付费,它们仍然是免费的精简版订阅级别,并为您提供基本的网络指标报告,该报告仍涵盖了您之后的部分内容。无论如何,现在将是一个很好的机会,可以利用它来调试性能。

+0

谢谢。在我们尝试newrelic的时候接受你的答案,尽管它不完全是我们想要的,但它似乎是一个体面的工具,可以完成问题的提问。 –

1

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

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

+0

它更多地监控和整理诸如独特用户(AFAIK,Apache不能这样做)或其他任意事件的业务级别指标。我看过的大多数集群监视器都会以10K事件/秒的速度挣扎,这正是我正在处理的事情。 –

1

看看使用的WebSockets,他们的开销比HTTP请求小得多,它们非常适合于实时的Web应用程序。有关基于节点的websocket示例,请参见:http://nodeknockout.com/

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

您将需要运行一个后台程序,如果你想你的Apache服务器上运行它。

也看看: http://kaazing.com/如果你不想少麻烦,但愿意分出一些现金。

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

+0

没有看到WebSockets如何为此提供帮助。问题不在于我无法处理10K请求/秒(我可以),但是*监控*在这种规模下发生的事情是一个挑战 –

+0

@Malcolm我不确定你到底想要达到什么目的,但是...如果您使用Node.js(一个事件驱动平台,所有代码都是异步的),您可以实时跟踪所有这些请求,并在需要时存储它们。 – Jack

相关问题