ユーザーのために、バックエンドを使用して大量のバッチ処理を並列化しています。これには、100個のタスクを専用キューに追加します。 は、5つの動的バックエンドにタスクを分散します。これらのタスクの多くは、 URLを外部Webサービスにフェッチします。デプロイされたアプリでappengine javaバックエンドが診断される
私たちは一人のユーザーのためにこれを実行すると、すぐに我々は最終的に処理する新しいタスクを停止 バックエンドのほとんどを参照してください(例えば、夜間バッチ実行で)多くのユーザーのためにそれを実行し として正常に動作するようですけど。
レート制限を試してみましたが、それでも問題はありませんでした。フリーズした バックエンドを手動で停止し、新しいものが起動し、あまりにもフリーズするまで 処理を開始することができます。最終的には、凍結されたサーバーを停止する反復が数回行われた後ですべて完了します。
明らかに、これは私たちの能力を大きく制限していますので、私は この問題の診断方法を疑問に思っています。 ローカルホスト上でこれを再現することはできません。実際にはマルチスレッドではないため、実際には展開されたデータパターンを複製することはありません。
プルキューを使用してこれを処理できる可能性がありますが、そのコードは というコードで書かれています。私はむしろキュー/バックエンドスケジューラに という仕事をさせてください。
私がしたいのは、プロファイラまたはjconsoleをバックエンドに接続することです。つまり、 は、フリーズがどこから来ているかをすぐに教えてくれます。それも ですか?そうでない場合は、 を使用してフリーズされたバックエンドを診断できる他の方法はありませんか?
はFYI:「凍結」のインスタンスは、それがメモリリークすることができ、すなわち、250MBする150メガバイト からメモリのさまざまなレベルを持っていますが、メモリ番号は本当にをサポートしていない、彼らは凍結時にゼロのCPUを消費し、新しいタスクを処理しません。あなたの注意と助けを
おかげで、スティーブ
ヘッドアップに感謝しますが、これはGAEのバックエンドに正しく接続できないと思いますか? –
私はGAEを一度も使用していませんが、サーバーインスタンスへのアクセスを許可するか、リモートデバッグ機能を持つと仮定します。 –