2017-08-16 8 views
1

私はJavaとTomcatを初めて使い慣れました。私は春のMVCを使用してJavaでWebサイトを開発しています。それはTomcat 8を実行しているLinuxサーバに配備されています。配備するとすべてうまく動作し、データベースに接続します。問題は、サイトが非常に素早くアイドルになっているようだということです。私はそれを正確に時間を計ることができませんでしたが、サイト全体がアイドルになるのに約1分しかかかりません。その後、次のリクエストは非常に遅く、すべてのクラスにロードされます。私もセッションを失っています。Java WebアプリケーションがTomcatですぐにアイドルになるようです。

これはよく起こりますか?私はjavaで何か間違っているように聞こえますか? Tomcat?どちらも?

EDIT:StuPointerExceptionのコメントに照らして、データベース接続管理を更新しました。私は現在Apache dbcpを使用しています。これで問題が解決すれば、私は更新します。 QAテスターに​​私のサイトにもう少しヒットする時間を与えたいと思います。

+0

接続プールを使用してデータベースに接続していますか? – StuPointerException

+0

私は基盤となるアーキテクチャについてはわかりませんが、JDBCを使用して問合せを実行するデータベース接続にOracleDataSourceを使用しています。私はそれぞれのクエリが実行されるときに接続を開いたり閉じたりしています。アイドル時にはログインページ(データベースに接続しない)を読み込むだけでも速度が遅いことを指摘しておきましょう。 –

+0

クラウドプロバイダーの制限のために起こっている可能性があります。たとえば、無料でHerokuでアプリケーションをホストすると、30分の休止後にアプリケーションがスリープ状態になります。 –

答えて

1

あなたの質問に直接答えるのは、サーバーのセットアップに関する詳細情報なしには難しいです。

このような動作が見られるたびに、誤って構成されたデータベース接続プールが発生します。新しいデータベース接続の作成にはかなりのオーバーヘッドがあります。

接続プールを使用していない場合、またはプール内の接続が拒否された場合(検証クエリ/チェックがないため)、接続タイムアウトにより時間の経過とともにパフォーマンスの問題が発生することがあります。

+0

私は間違いなくデータベース接続が問題になると思います。私はそこでもっと研究をするつもりです。私の主なポイントは、これはTomcatのデフォルト動作ではない、ということですか?サイトが1分でアイドル状態にならないように。 Tomcatの設定ではなく、自分のコードで問題になっているようです。それは正しいと思いますか? –

+0

うん、それは正しい。 – StuPointerException

+0

私は答えとしてこれをマークしています。上記の私の更新では、私は接続プールを使用していませんでした。私はApache DBCPを使用するようにデータベース接続を更新し、パフォーマンスが大幅に向上しました。サイトは現在、「通常」、多かれ少なかれ実行中です。私のQAテスターは満足しています! 編集:また、ご協力いただきありがとうございます。 –

関連する問題