8

我正在开发一个大型 Django (v1.5.1) 应用程序,其中包括多个应用程序服务器、MySQL 服务器等。在将 NewRelic 推广到所有服务器之前,我想知道每个事务会产生什么样的开销。

如果可能的话,我什至想区分理想的应用程序跟踪和服务器监控。

有谁知道这个普遍接受的数字?也许是一个正在进行此类调查或步骤的网站,以便我们可以自己进行调查。

4

1 回答 1

8

对于 Python 代理和 Django Web 应用程序的监控,每个请求的开销取决于在被检测的特定请求中执行了多少函数。这是因为没有完成完整的分析。相反,仅检测感兴趣的特定功能。因此,只有为那个函数调用执行包装器的开销,而不是嵌套调用,除非这些嵌套函数依次是被检测的函数。

在 Django 中检测的特定函数是中间件和视图处理函数,加上模板渲染和模板渲染器中处理每个模板块的函数。与 Django 本身不同的是,您可以检测用于执行查询的低级数据库客户端模块功能,以及 memcache 和 Web 外部等。

这意味着,如果对于特定的 Web 请求执行仅通过 100 个检测函数,那么只有执行那些会产生额外开销。相反,如果您的视图处理程序执行了大量不同的数据库查询,或者您正在渲染一个非常复杂的模板,则检测函数的数量可能会更多,因此该 Web 请求的开销会更多。也就是说,如果您的视图处理程序正在做更多的工作,那么它通常已经比不太复杂的处理程序具有更长的响应时间。

换句话说,每个请求的开销不是固定的,它取决于正在完成的工作量,或者更具体地说,调用了多少检测函数。因此,无法量化事物并为您提供固定的每个请求的开销数字。

总而言之,会有一些开销,而目标的总体目标范围约为 5%。

但通常发生的情况是,从性能指标中获得的洞察力意味着,对于大多数客户来说,通常可以立即发现一些非常简单的改进。进行此类更改后,响应时间可以很快降低到低于开始监控之前的水平,因此您最终会领先于您在没有监控时开始的地方。随着进一步的挖掘和调整,改进可能会更加引人注目。注意所提供的性能指标的某些方面,您还可以更好地调整您的 WSGI 服务器,也许可以更好地利用它并减少所需的主机数量,从而降低您的托管成本。

于 2013-10-02T01:50:41.183 回答