我们在 Heroku 上运行 Django 应用程序,最近我们发现了一些性能问题。我们安装了 New Relic APM 插件,我可以看到,每当响应时间出现峰值时,时间大部分都花在 New Relic 所谓的“请求队列”上(参见附图)。 在此输入图片描述
有人可以帮我找出问题所在吗?为什么请求要排队?这是水平缩放问题吗? Python 应用程序本身似乎不是
根据我的要求快速阅读 NewRelic [文档] (https://docs.newrelic.com/docs/apm/apm-ui-pages/features/request-queuing-tracking-front-end-time/)排队。
您的应用程序的工作人员似乎正忙于处理现有请求,他们可能需要一些时间才能准备好服务下一个请求,因此请求会排队或堆积。
您可能希望增加工作人员数量,或者水平扩展您的应用程序以拥有后端应用程序的多个实例,以便更多工作人员可以满足更多请求,并可以缩短请求队列。
当然,当您这样做时,您可能还想考虑实现某种数据库连接池,以便更有效地使用数据库连接。这只是您可能会大规模遇到的另一个问题,我在之前的项目中也遇到过。