0

MySQL を頻繁にクエリする Play アプリケーションを使用しています。実際、ほぼすべての操作で何らかの方法でデータベースにクエリが実行されます。

私が理解しているように、Play は非同期およびノンブロッキング アプリケーションをサポートするように設計されており、それに従ってコーディングすることを推奨しています。しかし、com.mysql.jdbc.Driver はブロッキング JDBC ドライバーであるため、非ブロッキング クエリを使用する方法がわかりません。

アプリケーションが複数 (6 ~ 20) のユーザーによって同時に使用されると、重大なパフォーマンスの問題が発生します。そして、アプリケーションの使用を開始すると、時間の経過とともに遅くなります。

そこで、「高度な同期アプリケーション」についてここで提案されているように、これを application.conf 内に配置して、デフォルトの play akka 構成を変更してみました: http://www.playframework.com/documentation/2.1.0/ThreadPools

play {
  akka {
    event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
    loglevel = WARNING
    actor {
      default-dispatcher = {
        fork-join-executor {
          parallelism-min = 300
          parallelism-max = 300
        }
      }
    }
  }
}

私が持っている質問は次のとおりです: application.conf の他のほとんどの構成は key=value ペアです。この json オブジェクトをファイルに直接配置するだけで機能しますか? これを行ってもエラーは発生しないので、これを受け入れると思いますか?

はいの場合、これが有効かどうかをテストするにはどうすればよいですか? アプリケーションのパフォーマンスが大幅に変化することはありません。したがって、ここで根本的に何か間違っているかどうかはわかりません。ヘルプ、ポインタ、またはコメントは高く評価されます。

2 つの CPU と 2GB の xmx を搭載した Linux ボックスで、OpenJDK 1.6 で Play 2.0.3 を使用しています。

4

1 に答える 1

0

構成ファイルに のセクションが既にある場合は、 および の値をdefault-dispatcher使用してfork-join-executor値を増やしparallelism-minてくださいparallelism-max

log-config-on-start = on構成のセクションにオプションを追加play { akka { }}して、アプリケーションの開始時に完全な akka 構成をログに記録できます (そして、default-dispatcherと に適切な値があるかどうかを確認parallelism-minしますparallelism-max)。

于 2013-03-13T11:48:17.117 に答える