質問: DriverManager.getConnection(url, user, password); // データベースに対する処理 }catch (SQLException e){ } ``` のように毎回呼び出して接続しています。 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] しか分かりません。情報が少なく、すいませんが思い当たることがございましたら、アドバイスいただけますと幸いです。
回答: > > Select文を1つにしたとしても、ユーザーが100人が同時にこのページを開くと、同じエラーが発生しないのかと不安です。 > > > これを解決するためには、どのようなアプローチがあるのでしょうか? > > > まず根本的に DB にあまり負荷をかけないように、実装を見直すことが重要です。 その上でキャッシュ化できないか検討すると良いと思います。 > > ちなみに、2秒で100個のSelect SQLを処理するということ自体はあまり想定し得ないケースなのでしょうか? > > > そうですね、かなり重い処理なので、原則としてサイト公開前に解消しておくべきでしょう。 > > 重大: 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] > > > コードが提示されていないので、これだけの情報で原因の特定は難しいと思います。 NullPointerException ということなので、そもそも DB 負荷ではなく、他のところに問題があるような気がしますが。