让我们说我们有一个相当典型的Django Web应用程序:
有些网址基本上只是一个几乎没有查询的渲染Django模板,有些网页包含了Redis的一些信息。 但是有一些页面可以执行一些相当复杂的数据库查询,这些查询可以(在所有可能的优化之后)在MySQL端执行几秒钟。
这就是我的问题 - 每当一个gunicorn工作者收到这样的重 URL的请求时,它不再服务其他请求一段时间 - 它只是闲置在等待数据库回复。如果有足够的此类查询,那么最终所有工作人员都会闲置并等待重 URL,而不会为其他更快的页面提供服务。
有没有办法允许工作人员在等待数据库回复时做其他工作?或者以某种方式扩大工作池在这种情况下(最好不要缩放RAM使用和数据库连接计数:))?至少有没有办法找出有关多少工人在枪炮池中忙碌的统计数据以及他们每个人处理请求的时间长短?