2017-12-18 3 views
0

起動時にフリーズしているOracleデータソースを使用しているSpringブートアプリケーションがあります。コンソールに最後に出力されるメッセージは次のとおりです。起動時にSpringブートアプリケーションがフリーズする

[2017-12-18T15:34:19,425] INFO org.hibernate.dialect.Dialect HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect 
[2017-12-18T15:34:27,186] INFO org.hibernate.hql.internal.QueryTranslatorFactoryInitiator HHH000397: Using ASTQueryTranslatorFactory 

その後、無期限にハングアップします。これ以上のデバッグメッセージは出力されず、何も起こりません。私は何時間もそこに座らせたが、何もしなかった。

奇妙なことは、すべてが正常に動作していたことです。変更はありませんでした。突然これが起こり始めたのですが、なぜそれがただ凍っているのか分かりません。

+0

接続しようとしているデータベースが利用できない可能性があります。 [問題を見る](https://github.com/spring-projects/spring-boot/issues/7589) – Lethalskillzz

+0

私はデータベースに手動で接続できますので、利用できます。 – cloudwalker

答えて

1

それはあなたが提供した情報のうち、何が起こるかを伝えるのは難しいですが、 私はちょうど起こっていただきました!にいくつかの光を当てることができます物事のカップルを提案することができます

  1. は、スレッドダンプを取るようにしてください各スレッドが正確に何をするかを見てください。いくつかのスレッドダンプを取って、関係のあるスレッドがどこかでスタックしているのを見ると、おそらくstacktraceの理由を理解することができます。

  2. DEBUGのログを有効にすると、デバッグメッセージは表示されませんが、スニペットでは2つのINFOメッセージしか表示されませんでした。おそらくDEBUGの春と冬眠のログを設定することから始めることができます。

  3. 空のデータベースに接続しようとすると、初期化中に何かを読み込もうとすると(メタデータのようなもの)、時間がかかりすぎます(ただし、時間がかかるはずです)。

  4. 起動時に実行されているSQLを確認できます。ちょうどhibernateの "show sql"プロパティをtrueに設定すると、おそらく役に立ちます。

  5. Springでブレークポイントを設定して、どのBeanがスタックしているかを知ることができます。少し曖昧ですが、どのBeanが起動に失敗してそれをデバッグするかを見つけることが重要です)。

+0

申し訳ありませんが、私はもっと明確にすべきです。ルートロガーをDEBUGに設定していますが、現時点ではデバッグレベルのメッセージは出力されていません。データベースは実際には空です。これはまったく新しいデータベースです。私はまた、ハイバネートSQLトレースを持っているが、SQLは実行されていない。私はSpringを介してデバッグしようとしましたが、実際に「スタック」している場所は見つかりませんでした。 – cloudwalker

+0

スレッドダンプを試しましたか? –

+0

ええ、何も疑いが出てきた。しかし、私は、最後の行の後のすべてのログステートメントを呑み込んでいることに気づいただけです。そして私が知ることから、メタデータを読もうとする何か「無限の」ループがあります。私は、たとえそれが新鮮であっても、データベースを核にして再開しようとしていると思います。 – cloudwalker

関連する問題