2016-09-15 10 views
-1

私はTomcatによってホストされたJava Webアプリケーションを作った。これはURLにあります。最初の応答が遅いTomcat

私が経験している問題は、初めてページを訪れるたびに10秒かかりますが、その後はたった100-500msしかかかりません。私はスピードの向上はブラウザのキャッシングによるものだと言いますが、キャッシュをリフレッシュしても実際にはそうではありません(ctrl + shift + r)私は同じ速い応答を得ます。

しばらくしてから約5分後にもう一度ページにアクセスし、もう一度遅くなります。

あなたは、例えばに検索パラメータ値を変更することにより、提供されたURL:1050にいくつかのテストを自分で試す105110522670400023002200ことがあります。

また、私が見つけた興味深い事実は、どのように大きなペイロード(1050と2300を比較しても)がほぼ同じであるということです。 9-10s。だから、私が前提にしているのは、Java Serverのようなものが準備をしなくてはならず、それが時間を費やしているということです。

編集:私は最初にそれはいくつかのリソースをロードする必要のJava/Tomcatに関連することができ、その後、いくつかの時間後に+何らかの理由で、それをアンロードし、再び-3-5minsので、考えていた

。しかし、私が上記のように、実行時に別のSQLクエリを引き起こすURLクエリ文字列を変更したとしても、それは再び長くロードされます。問題はDBに関連付けることはできますか?私はMySQLを使用しています。

EDIT2:

それは高速です理由は、ほとんどの場合、サーバーのキャッシュです。私は95%確信しています。それは2台のコンピュータなどで試してみるなどの実験をいくつか作ったからです(ブラウザのキャッシュではありません)。それがキャッシュされているときだけ高速であれば、実際には.executeQuery行のコードが長くかかることに気付きました。 WorkBenchのようなクライアントからの正確な要求がわずか0.285秒であっても、10秒かかる。したがって、私はPreparedStatementを使って試したり、さらに実験を試みようとしています。

+0

あなたのアプリケーションは、(あなただけでなく)複数のWebアプリケーションを扱うTomcatインスタンス上でホストされていますか? Tomcatが誰にも使われていないときに(リソースを保存するために)あなたのアプリを閉じて、次回訪問時にリロードするまでに時間がかかる可能性があります。 –

+0

はい、1つのTomcatサーバーと複数のアプリケーションがあります。どのアプリケーションでもオープンにして準備を整える方法はありますか? –

+0

私はあなたがそれを開いたままにすることはできませんが、あなたのWebホスティングプロバイダに依頼することはできません。たぶんそれは全く問題ではないでしょう。 –

答えて

0

内容量は200kBです。フロントエンドとバックエンドで最適化する必要があります。

主な問題はバックエンドです。なぜそれが長くかかるのかを確認してください。

フロントエンドでgzip圧縮を有効にすることができます。それを行う方法については、Tomcatのドキュメントを参照してください。これにより、ダウンロードのサイズが小さくなります。

ブラウザのキャッシングにより、2回目の時間がおそらく短縮されます。 レスポンスコードがFirebugであることを確認します。応答がキャッシュされている場合は、キャッシュされます。応答200は、サーバーからロードされたことを意味します。

+0

前にも述べたように、2回目は高速ですが、ブラウザのキャッシュが原因ではありません。私はリクエストをした後、同僚が同じURLでリクエストを出したという実験を試みましたが、それは即時でした。私が同じことを言ったように、たとえそれが小さくても大きなペイロードであっても。だから、ペイロードのサイズではありません。お試しいただきありがとうございます。 –

+0

プロファイラを使用してボトルネックを分析します。 jpaキャッシング、メモリ使用、適切に設定されたdb接続プールなどのプロセス時間を変更する可能性のあるさまざまな問題がある可能性があります。 – tak3shi

+0

しかし、サーバーのキャッシュになる可能性があります。 –

関連する問題