我想使用asyncio aiohttp来构建一个必须扩展到十几个进程的Web应用程序?
我如何决定增加asyncio进程的数量?
我应该监控IO或CPU并决定吗?
当你运行 aiohttp 服务器时,'ll serve all incoming requests using all available HDD/RAM/network resources and CPU core' s它在资源上运行 .
aiohttp
如果您的计算机上有多个CPU核心,最好的方法是在 nginx 后面运行 aiohttp 并将其配置为使用所有核心(阅读更多here) . 它'll allow you to utilize all avaliable machine'的资源无需手动调整其他内容 . 加上 nginx 将比纯 aiohttp 更好地提供静态文件 .
nginx
如果您没有非常高的应用程序,我认为上面会做得更好 .
否则您仍然可能面临当前机器资源的限制 . 然后,您应该检测瓶颈在哪里(是HDD,RAM,CPU,网络容量?)并决定选择哪种解决方案:
增加当前机器资源("Vertical scaling")
在多台计算机上运行应用程序("Horizontal scaling")
优化您的应用代码("profiling" "optimization")
上面的每一个方面都是一个巨大的单独主
1 回答
当你运行
aiohttp
服务器时,'ll serve all incoming requests using all available HDD/RAM/network resources and CPU core' s它在资源上运行 .如果您的计算机上有多个CPU核心,最好的方法是在
nginx
后面运行aiohttp
并将其配置为使用所有核心(阅读更多here) . 它'll allow you to utilize all avaliable machine'的资源无需手动调整其他内容 . 加上nginx
将比纯aiohttp
更好地提供静态文件 .如果您没有非常高的应用程序,我认为上面会做得更好 .
否则您仍然可能面临当前机器资源的限制 . 然后,您应该检测瓶颈在哪里(是HDD,RAM,CPU,网络容量?)并决定选择哪种解决方案:
增加当前机器资源("Vertical scaling")
在多台计算机上运行应用程序("Horizontal scaling")
优化您的应用代码("profiling" "optimization")
上面的每一个方面都是一个巨大的单独主