私は Playframework 2.2.3 アプリケーションを YourKit でプロファイリングして、いくつかのパフォーマンスの問題を解決しようとしています。これは私のアプリケーションではなく、私は play 2 に慣れていません。このアプリケーションは、Web ソケットを利用するマルチプレイヤー ソーシャル ゲームです。Amazon EC2 m3.large で実行されます
プロファイラーで確認できるのは、ゲーム プレイ ロジック (Web ソケット呼び出しによって開始) が play-internal-execution-context の 2 つのスレッドのうちの 1 つで実行されていることです。一部のルーチンには I/O が含まれており、部分的にメソッドの同期が行われているためにブロックが発生しています。play-internal-execution-context という名前のスレッドのプールがありますが、常に使用されるのは 2 つだけです。アクティビティは時々新しいスレッドに移動され、現在使用されているスレッド名は play-internal-execution-context-600 と 601 であることがわかります。
私はプレイドキュメントで見ることができます
Play Internal Thread Pool - これは Play によって内部的に使用されます。このスレッド プール内のスレッドによってアプリケーション コードが実行されることはなく、このスレッド プール内でブロックされることもありません。そのサイズは、application.conf で internal-threadpool-size を設定することで構成でき、デフォルトで使用可能なプロセッサーの数になります。
アプリケーション コードを含むスレッドのスタック トレースを見ると、開発者が間違った設計をしている可能性があります。または、フレームワークの非同期の性質のため、コードは実際にはこれらの内部スレッドで実行されるだけです。 ?
ではごきげんよう
ジョン