我正在开发一个包含多个应用程序服务器,MySQL服务器等的大型Django(v1.5.1)应用程序。在将NewRelic推广到所有服务器之前,我想知道每个服务器会产生什么样的开销。事务。
如果可能,我甚至要区分应用程序跟踪和理想的服务器监控。
有人知道普遍接受的数字吗?也许是一个正在进行此类调查或步骤的网站,以便我们可以自己进行调查。
答案 0 :(得分:8)
对于Python代理和Django Web应用程序的监视,每个请求的开销是由在已检测的特定请求中执行的函数数量来驱动的。这是因为没有完成整个分析。相反,只有特定的感兴趣的功能被检测。因此,只有为一个函数调用执行包装器的开销,而不是嵌套调用,除非那些嵌套函数反过来正在被检测。
在Django中检测的特定函数是中间件和视图处理函数,以及模板渲染和模板渲染器中处理每个模板块的函数。与Django本身不同,您可以使用低级数据库客户端模块函数来执行查询,以及memcache和Web外部等。
这意味着如果对于特定的Web请求执行仅通过100个已检测的函数,则只执行那些会产生额外开销的函数。相反,如果您的视图处理程序执行了大量不同的数据库查询,或者您正在渲染一个非常复杂的模板,则检测函数的数量可能会更多,因此该Web请求的开销将更多。也就是说,如果你的视图处理程序正在做更多的工作,那么它通常会比不那么复杂的响应时间具有更长的响应时间。
换句话说,每个请求开销并不固定,取决于正在完成的工作量,或者更具体地说,调用了多少个已检测的函数。因此,无法对事物进行量化,并为每个请求数字提供固定的开销。
所有人都说,会有一些开销,目标的一般目标范围约为5%。
通常情况下,通过获得性能指标获得的洞察力意味着对于大多数客户而言,通常会有一些非常简单的改进,几乎可以立即找到。进行了这样的更改后,响应时间可以很快降低到低于开始监控之前的响应时间,因此当您没有监控时,最终会超出您的开始位置。通过进一步的挖掘和调整,改进甚至可以更加引人注目。请注意所提供的性能指标的某些方面,您还可以更好地调整您的WSGI服务器,并可能更好地利用它并减少所需的主机数量,从而降低您的托管成本。