如何扩展CPU绑定的Twisted应用程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何扩展CPU绑定的Twisted应用程序?相关的知识,希望对你有一定的参考价值。

我正在开发一个扭曲的Web应用程序,它上传文件并加密它们,将url +键返回给用户。

我的任务是扩展这个应用程序。当有超过3-4个并发上载请求时,性能将显着下降。

我不是Twisted专家,但我认为这是因为它在一个python进程中运行,是一个高CPU应用程序和GIL?

我怎么能去缩放呢?

如果这是一个不同的框架,比如Flask,我会把uwsgi放在它前面并缩放进程数。 Twisted会有类似的工作吗?如果有的话,通常会使用哪些工具?

答案

如果你认为你可以在应用程序面前抛出uwsgi,我认为它非常接近于无共享。因此,您可以运行该程序的多个实例,并从每个实例获得核心的性能。

对于如何运行多个实例,有几个非常明显的选项。你可以在前面安装负载均衡器。您可以让进程共享侦听端口。也有更多的可能性。

由于您的协议似乎是HTTP,因此任何旧的HTTP负载均衡器都应该适用。它不需要是Twisted或Python本身(虽然它可能是)。

如果你想共享一个监听端口,Twisted有API用于在进程(IReactorSocket)之间传递文件描述符,以及用于启动从父进程继承文件描述符的新进程(IReactorProcess)。

以上是关于如何扩展CPU绑定的Twisted应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

MCS-51系列单片机系统功能的扩展

Socket.IO 与 Twisted [关闭]

linux内核调度算法--CPU时间片如何分配

linux内核调度算法--CPU时间片如何分配 转!

用于模板渲染的 Twisted Web 服务器中的自定义文件扩展名处理程序

3.如何理解开多线程可以充分利用CPU?