2012-04-01 3 views
0

私は問題を抱えています。私は、Spring + Hibernateアプリケーションを持っています。これは、ここ数日間、実際には奇妙な動作をしています。Springパフォーマンスの問題につきました

通常、デバッグモードでも、約15秒間ブートストラップされました。

重大なエラーや問題を表示することなく、数日後には、3回遅れていたとしても2回の実行を開始しました。

問題がTomcatにあったと思ったのですが、私が書いた一連の単体テストを実行しても、それらは驚くほど遅くなりました(テストで8+秒+初期コンテキストブートストラップ)。私はローカルのPostgreSQLデータベースを使って、通常はそれほど悪くない(テストでは約1秒)。

私は立ち往生しています。私が最後にしたのは、@Controlleralクラスの@Transactionalのサポートを追加することでした。これが理由だろうか?私は、安定したサーバーにトランザクションの変更を展開して再起動したとき、前と同じ速さで実行されたため、疑いがあります。

私は完全にあなたがあなたの説明に基づいて、我々は唯一の推測できることを知っている

答えて

2

を立ち往生しています。明らかに、を使用している場合、後続のビルドのビルド時間は、どのコード変更が理由である可能性があるかを明らかにします。コードを特定すれば、診断はずっと簡単になります。

実際にはコードの変更ではなく、環境の変化によって発生する可能性があります。例えば:

  • 春には、ブートストラップにいくつかの外部リソース(XMLスキーマ、DTDなど)
  • いくつかの余分なネットワークのオーバーヘッドがある(ルータ/スイッチの再設定、ファイアウォール)
  • データベースが断片化または何らかの形で遅いをフェッチ。

    • は、ブートストラップの間に、いくつかのスタックトレースをキャプチャ:調査

    を掃除してみてください。本格的なプロファイリングの必要はありません、私は物事を遅く単一のブロック/待機操作があると確信しています

  • 可能なすべてのログステートメントを有効にします。 すべてです。アプリケーションのどの部分が遅いかを調べます。
1

私の推測では、あなたのDBがこれの根本的な原因だと思います。

おそらく、データサイズの増加やスキーマの変更などにより、以前よりも時間がかかっているクエリがある可能性があります。ここで

はいくつかのヒントがあります:

  • 遅くなるように思われるかを確認するために、起動ログをチェックしてみてください。
  • 古いバージョンのアプリを起動して、それが高速かどうか確認できますか?
  • どのテストが遅いのが見えますか?
0

多分プロファイリングは、より多くの情報を得るのに役立ちます。jvisualvmと呼ばれるJDKに同梱されている便利なツールがあります(jdkインストールのbinフォルダ内にあります)。それはかなり自明です。あなたはあなたに接続して、拍手を開始することができます。

関連する問題