メモリを集中的に使用する長時間実行タスクのバーストを定期的に処理する Google App Engine アプリがあります。スレッドセーフ モードの Python2.7 ランタイムで taskqueue API を使用しているため、各インスタンスは複数のタスクを同時に処理しています。その結果、次のエラーが頻繁に発生します。
合計 8 つの要求を処理した後、137.496 MB のソフト プライベート メモリ制限を超えました
このリクエストを処理した後、このリクエストを処理したプロセスがメモリを大量に使用していることが判明し、終了しました。これにより、アプリケーションへの次のリクエストに新しいプロセスが使用される可能性があります。このメッセージが頻繁に表示される場合は、アプリケーションでメモリ リークが発生している可能性があります。
私が知る限り、各インスタンスはそれぞれ 8 つのタスクを実行しており、最終的にソフト メモリ制限に達しています。タスクは非常に少量のメモリを使用して開始しますが、最終的には約 15 ~ 20 MB に増加します。
インスタンスに 5 つ以下のリクエストを割り当てるように App Engine に指示することを制限する方法はありますか? または、タスクが 10 分間で 20 MB のメモリを使用し、それに応じて調整することが予想されることを App Engine に伝えますか?
タスクを処理するインスタンスの数を自動的にスケーリングしたいので、バックエンド API を使用したくないのですが、それが唯一の方法である場合は、それを構造化する方法を知りたいです。