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 を使用しています。