お世話になっております。
今日は質問があるのですが、教えていただけますと幸いです。
ソースコードはないのですが、大体の状況をお伝えできればと思います。
検索結果をテーブルにして表示し、100件表示するページを作りました。
その結果の各レコードを表示しようとするごとにDBに接続し、
Java
1 2Connection conn = null; 3String url = "jdbc:mysql://localhost/jdbctestdb"; 4String user = "testuser"; 5String password = "testpass"; 6 7try{ 8 conn = DriverManager.getConnection(url, user, password); 9 10 // データベースに対する処理 11 12}catch (SQLException e){ 13}
のように毎回呼び出して接続しています。
100回DBに接続をして、Select文を発行しようとしているわけです。ちなみに、2秒ぐらいで終わるみたいです。
試験環境では、1個のブラウザからこのページを開いてもエラーは出ないのですが、2台以上(2つ以上のブラウザ)からほぼ同時にこのページを開くと、衝突が起こってどちらか一方がかなりの確率でエラーになります。
これを解決するためには、100件表示を1つのSelect文で済ませればいいということはわかるのですが、一つ気になったことがあります。
Select文を1つにしたとしても、ユーザーが100人が同時にこのページを開くと、同じエラーが発生しないのかと不安です。
これを解決するためには、どのようなアプローチがあるのでしょうか?
★Apache Tomcat側で設定を変える?ヒープ等の設定。
★MySQLデータベースサーバの設定を変える?max_connectionsおよびthread_cache_sizeなど色々なVariableの値の変更?
(★Eclipseの設定?)
色々と調べているのですが、少し袋小路になりそうです。
アドバイスいただけますと幸いです。よろしくお願いいたします。
ちなみに、2秒で100個のSelect SQLを処理するということ自体はあまり想定し得ないケースなのでしょうか?
こちらはそれほど大規模ではなく、中小規模のWebサイトを運営しようと考えております。
エラーメッセージは、
重大: Servlet.service() for servlet [jsp] in context with path [/system] threw exception [java.lang.NullPointerException] with root cause [月 4 08 21:32:20 JST 2019]
しか分かりません。情報が少なく、すいませんが思い当たることがございましたら、アドバイスいただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー