我有一个 Google App Engine 应用程序,它会定期处理大量内存密集型长时间运行的任务。我在 Python2.7 运行时以线程安全模式使用任务队列 API,因此我的每个实例都同时处理多个任务。结果,我经常收到以下错误:
总共服务 8 个请求后,超过了 137.496 MB 的软私有内存限制
处理完这个请求后,发现处理这个请求的进程占用了太多内存,被终止了。这可能会导致一个新进程被用于对您的应用程序的下一个请求。如果您经常看到此消息,则您的应用程序中可能存在内存泄漏。
据我所知,每个实例都承担 8 个任务,最终达到软内存限制。这些任务开始使用非常少量的内存,但最终增长到大约 15-20MB。
有什么方法可以限制告诉 App Engine 为一个实例分配不超过 5 个请求?或者告诉 App Engine 任务预计在 10 分钟内使用 20MB 内存并进行相应调整?
我不想使用后端 API,因为我希望处理任务的实例数量能够自动扩展,但如果这是唯一的方法,我想知道如何构建它。