对于使用ASYNC / AWAIT语法构建异步应用程序的Python开发人员,异步是许多框架中的重要图书馆。虽然这一点新遗物Python代理对于同步框架,始终运作得很好django烧瓶,开发人员在流行的异步框架上喜欢龙卷风aiohttp., 和卫生间已经不太理想的可见性。

新的遗物Python代理版本5.0但是,包括对使用Python的Asyncio库的任何框架工作的开发人员提供令人兴奋的新功能:事件循环诊断。通过这种功能,Python代理现在正在有关获取大量时间来获取事件循环的交易的信息,允许开发人员更好地解释其发生的发生或减速,或者减慢其异步Python应用程序。

我们解决的问题

要更好地了解此功能地址的问题,请考虑以下内容:

想象一下,您正在运行异步Python应用程序,并且您可以从新的遗物获取慢速事务的警报。如果你检查一下交易追踪在新的遗物中,您可能会看到:

显然,响应时间为1,880毫秒并不好 - 但这是什么意思?应用程序代码减慢了什么?它甚至是慢慢的代码吗?

一般而言,Async应用程序似乎慢的为什么有三种可能的解释:

  1. 网络已经减慢了,并且需要很长时间才能从事务中获取其他服务器的响应。
  2. 该功能在其中封锁了工作,导致它变慢。
  3. 其他一些工作正在阻止事件循环,导致事件循环中其他工作的放缓。

然而,在涉及异步Python应用程序的大多数情况下,解释#3是最难以检测和诊断的。您的应用程序正常行为,但事务跟踪无法解释应用程序的实际执行时间,也没有揭示关于阻止事件循环的任何信息。

输入事件循环诊断。

事件循环诊断如何在新遗物中工作

要提供实际执行时间并显示内容阻止事件循环,新遗物APM现在跟踪在事件循环上执行的所有跟踪段。APM记录等待时间通过在阻止事务的根目录中添加等待段,同时从其所有活动段中减去那个时间。这样,APM可以收集有关任何迹线的任何潜在阻止者的信息,以及花多少时间等待其他迹线完成。

事件循环诊断信息可在APM和VIV中使用新的遗物查询语言(NRQL)查询。

事件循环度量将显示在交易中崩溃表在APM:

在交易中将显示等待其他事务的时间追踪细节页:

此外,EventLoOptime和EventLoopwait属性将通过NRQL查询提供,您可以在其中显示的结果新的遗物见解。例如:

选择count(*)为“count”,平均(eventlooptime)为“looptime”,平均(EventLoopwait)从事务方面名称中的“循环行为”

结论

默认情况下,通过我们现有的AIOHTTP,SANIC和Tornado仪器提供事件循环诊断。诊断信息适用于使用我们的金属版background_task.Web_Transaction.装饰器API。如果您正在使用Tornado,我们支持6.x版本的仪器,我们很快就会添加Tornado 5.x支持。来自Tornado Web服务器,框架和HTTP客户端的数据将显示在APM和Insights中。

伸出援手新的遗物探险家枢纽,并让我们了解您使用事件循环诊断的体验新遗物。

Kevin Chu是基于波特兰的产品经理,或者。当他不履行可观察性时,他喜欢与他的孩子共度时光,思考可持续性和循环经济初创公司。查看帖子

对新遗物博客的写作有兴趣吗?亚搏体育登入网送我们一个球场!!