私はplay 2.0フレームワークにアプリケーションを書いています。このアプリの目的は、画像のアップロードを処理し、それらをバックグラウンドでサイズ変更することです。playframeworkでは、アクターよりもスレッドの優先順位をどのように設定しますか?
アップロードはファイルをファイルシステムに保存する標準のポストハンドラを介して処理されます。今はちょうどイベントまたはIOスレッドで行われます。ファイルが正常に保存されると、AKKAのアクタには元の画像のサイズを変更するためのメッセージが送信されます(現在は4)。これらのサイズ変更操作はCPUを要求し、少し時間がかかります。
これはすべてうまくいく、私はいくつかの負荷の下でアプリケーションをテストするまで。負荷がかかっていると、リサイズ操作は有効なCPU時間をすべて消費するため、受信するHTTPリクエストはCPU時間が多少不足し、最終的に要求のタイムアウトが始まるまでこれらのリクエストのバックログが表示されます。
問題は、着信HTTPリクエストにサイズ変更要求よりも優先順位を与えるようにシステムを設定する(または書き直す)方法です。
興味深い話題ですが、外部グラフィックライブラリを使用したり、サイズ変更する画像のキューを構築することを検討しましたか(DB内)?そのような場合は、キューの実行を遅くしたり、大量のトラフィックが発生した場合でも停止させることができます。 – biesior
スペースの問題でdb内のイメージをキューに入れようとしています。 – harmanjd