由于内存问题,我拥有的一个 Twisted 应用程序经常被杀死。程序变大了,在被操作系统关闭之前消耗了系统的所有内存。重新启动并重复。
这是在虚拟服务器上,所以我将内存加倍,问题解决了 - 守护进程稳定在 1.25GB 左右的内存
有没有人对我如何最好地描述这个来判断所有内存被吸入的内容/位置有什么建议?
如果应用程序上的信息有帮助,我将使用扭曲反应器和 internet.timer.TimerService 轮询数据库以通过三个“服务”更新项目。要处理的项目被推送到一个 twisted.internet.defer.DeferredList 中,并且它们的处理发生在一个 deferToThread 块中。在延迟过程中,有一些阻塞操作(获取网页等)和大量 HTML 解析(beautiful soup 和其他库)。我建议 reactor.threadpool 的大小为 10,并且每个“服务”都使用具有 10 个令牌的 SemaphoreService 进行线程处理。我真的希望这个守护进程最大内存约为 400MB,而不是 3 倍。