首页 > 解决方案 > 如何决定是否增加 asyncio aiohttp 进程的数量?

问题描述

我想使用 asyncio aiohttp 来构建一个必须扩展十几个进程的 Web 应用程序?

我如何决定增加 asyncio 进程的数量?

我应该监控 IO 还是 CPU 并做出决定?

标签: python-asyncioaiohttp

解决方案


当您运行aiohttp服务器时,它将使用所有可用的 HDD/RAM/网络资源和 CPU 核心来处理所有传入请求,它在资源上运行。

如果您的机器上有多个 CPU 内核,最好的方法是在aiohttp后面运行nginx并将其配置为利用所有内核(在此处阅读更多内容)。它将允许您利用所有可用机器的资源,而无需手动调整其他内容。Plusnginx将比 pure 更好地提供静态文件aiohttp

如果您没有非常高负载的应用程序,我认为上面会做得更好。

否则你仍然会面临当前机器资源的限制。然后,您应该检测瓶颈在哪里(是 HDD、RAM、CPU、网络容量?)并决定选择哪种解决方案:

  • 增加当前机器资源(“垂直缩放”)
  • 在多台机器上运行应用程序(“水平缩放”)
  • 优化您的应用代码(“分析”+“优化”)

上面的每一种方式都是一个巨大的独立主题。


推荐阅读