2

パフォーマンスに問題がある Web アプリをデバッグしようとしています。休止状態のログをオンにしましたが、これがたくさん見られます:

2010-10-28 10:58:00,423 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786198212608
2010-10-28 10:58:01,390 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786202173440
2010-10-28 10:58:01,418 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786202288128
2010-10-28 10:58:26,181 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786303717376

「closed session at」に関するログがないことを懸念しています

私は現在これを見ています: http://static.springsource.org/spring/docs/2.5.x/reference/orm.html しかし、ログについて安心できるものは何もありません

4

2 に答える 2

3

ソースを見ると、メッセージはSessionImpl.javaのコンストラクターからログに記録されているようです。セッションが閉じられたときに対応するログ ステートメントがありますが (メソッドを参照public Connection close() throws HibernateException)、レベルでログに記録されTRACEます。私は slf4j に詳しくありませんが、このドキュメントTRACEからは より細かいレベルにあるように見えますDEBUG。そのため、ログの量を増やして (おそらくALL?)、セッションが閉じているかどうかを確認してください。

于 2010-10-28T19:52:47.717 に答える
1

どのようにセッションにアクセスしていますか? 春のトランザクションアノテーションを使用していますか?

現在のアプリでは hibernate テンプレートを使用していますが、これは明らかに不要になっています。他の休止状態の初期化デバッグステートメントが表示されますが、それがデバッグとして表示されないのはどういうわけかわかりません。

とにかく、おそらくセッション ファクトリへの参照を取得して、sessionFactory.getStatistics().getSessionOpenCount() を呼び出すことができます。

setStatisticsEnabled(true) を呼び出す必要がある場合があります

http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/stat/Statistics.html

これにより、少なくとも開いているセッションの数を取得して、継続的に増加しているかどうかを確認できます.

binil's answer ごとに、さまざまなログ レベルでのログ エントリの開始/終了に関するバグ レポートもあります。 http://opensource.atlassian.com/projects/hibernate/browse/HHH-2425

于 2010-10-28T19:53:25.953 に答える