python-asyncio - 如何决定是否增加 asyncio aiohttp 进程的数量?
问题描述
我想使用 asyncio aiohttp 来构建一个必须扩展十几个进程的 Web 应用程序?
我如何决定增加 asyncio 进程的数量?
我应该监控 IO 还是 CPU 并做出决定?
解决方案
当您运行aiohttp
服务器时,它将使用所有可用的 HDD/RAM/网络资源和 CPU 核心来处理所有传入请求,它在资源上运行。
如果您的机器上有多个 CPU 内核,最好的方法是在aiohttp
后面运行nginx
并将其配置为利用所有内核(在此处阅读更多内容)。它将允许您利用所有可用机器的资源,而无需手动调整其他内容。Plusnginx
将比 pure 更好地提供静态文件aiohttp
。
如果您没有非常高负载的应用程序,我认为上面会做得更好。
否则你仍然会面临当前机器资源的限制。然后,您应该检测瓶颈在哪里(是 HDD、RAM、CPU、网络容量?)并决定选择哪种解决方案:
- 增加当前机器资源(“垂直缩放”)
- 在多台机器上运行应用程序(“水平缩放”)
- 优化您的应用代码(“分析”+“优化”)
上面的每一种方式都是一个巨大的独立主题。
推荐阅读
- c# - 从 excel 读取日期时输入字符串的格式不正确
- yugabyte-db - 无法访问 yugabyte tserver 和 master admin ui
- python - 需要使用python删除列表中具有某些分隔字符的单词
- c# - 自包含,服务要求安装运行时
- javascript - 无法显示二级数组 JSON
- r - 启动时出现 R 错误:评估嵌套太深
- windows - 如何确定在经典 Windows 应用程序中如何调整窗口大小
- sql-server - SQL Server 连接失败 - Debezium - Kafka Connect
- java - 如何在电报机器人中看到来自 Java Web 应用程序的传入 POST 请求
- swift - 链接后无法使用 IBOutlets