8

spring mvcSpring Insight を使用してwebappをトレースしたいと考えています。tc サーバー 2.5 開発者版を起動すると、アプリケーションは起動しますが、コンソールに次のメッセージが表示されます。

20.10.2011 09:24:24 com.springsource.insight.intercept.trace.SimpleFrameBuilder enter
FATAL: Frame stack exceeded MAX_FRAMES_PER_TRACE limit or has been aborted limit: 3000 frameCount: 3000 aborted: false
20.10.2011 09:24:24 com.springsource.insight.collection.errorhandling.AdviceErrorHandlingAspect ajc$around$com_springsource_insight_collection_errorhandling_AdviceErrorHandlingAspect$1$e76a6b03
FATAL: Error swallowed in advice adviceexecution(void com.springsource.insight.collection.AbstractOperationCollectionAspect.afterReturning(Object, JoinPoint.StaticPart))

--

java.lang.IllegalStateException: Imbalanced frame stack!  (exit() called too many times)
com.springsource.insight.intercept.trace.ThreadLocalFrameBuilder.exit(ThreadLocalFrameBuilder.java:61)
com.springsource.insight.collection.DefaultOperationCollector.exit(DefaultOperationCollector.java:111)
com.springsource.insight.collection.DefaultOperationCollector.exitNormal(DefaultOperationCollector.java:67)
com.springsource.insight.plugin.springtx.TransactionOperationCollectionAspect.ajc$afterReturning$com_springsource_insight_plugin_springtx_TransactionOperationCollectionAspect$2$e13fb3a0(TransactionOperationCollectionAspect.aj:61)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$afterReturning$org_springframework_transaction_aspectj_AbstractTransactionAspect$3$2a73e96c(AbstractTransactionAspect.aj:78)
...

このメッセージの後でいくつかのコントローラー アクションを呼び出すことができますが、ある時点でサーバーが要求の処理を拒否し、同じスタック トレースをブラウザーに送信します。

この問題を経験した人はいますか?インサイト プラグイン、、、またはを無効にしてもannotation問題はhibernate解決しません。jdbcspring-tx

4

2 に答える 2

8

このコードの一部は、最近のバージョンで改善されています。

Spring Insight 1.5.1 を試してみることをお勧めします。これは tc Server 2.6.1 に付属しており、 springsource.org /insight から入手できます。

編集: あなたが見ている問題は、単一のトレースがあまりにも多くのフレームを蓄積しようとしたことです (デフォルトでは、1000 でカウントを停止します)。これは、アプリケーションが起動時に多数の SQL 呼び出しを行っているか、その他のインストルメント化された呼び出しを多数実行している可能性があるためです。これが検出されると、フレームの収集が停止され、(現在) 不均衡なフレーム スタックが取得されます。あなたの場合、エラーは良性です。

Java sysproperty (insight.max.frames) を設定することで、フレーム数を最大まで増やすことができます。

bin/setenv.sh で、JVM_OPTS に追加するだけです。

-Dinsight.max.frames=2000
于 2011-10-11T15:25:48.880 に答える
8

Jon Travisはほぼ正確ですが、システム プロパティは

-Dinsight-max-frames

デフォルト値は、insight-intercept-1.5.1.SR2.jar: com.springsource.insight.intercept.trace.FrameBuilder に見られるように 3000 です。

値を変更し-Dinsight-max-frames=6000て問題を修正しました。

于 2012-01-04T23:19:24.250 に答える