1

Windows 2008 R2 を使用していますが、CPU は 100% です。担当のアプリ プールで DebugDiag を実行したところ、次のコール スタックが見つかりました。

System.GC._Collect(Int32, Int32)
OpenAccessRuntime.Relational.conn.RelationalConnectionPool.CleanupLeftOvers(System.Object)
System.Threading.ExecutionContext.runTryCode(System.Object)
System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
System.Threading.ThreadPoolWorkQueue.Dispatch()
System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

私の質問は、このスレッドを生成したコンポーネントを特定したいので、このスレッドが Telerik アプリケーションからのものなのか、開発者の 1 人が作成したものによって制御されているのかを知りたいということです。

このスレッドを生成したオブジェクトを特定するにはどうすればよいですか?

4

1 に答える 1

2

このスレッドは、OpenAccess ランタイムによって生成されます。

OpenAccess は、構成可能な「アクティブな最大接続数」の値 (デフォルトは 10) を持つ接続プールを維持します。すべての接続が割り当てられると (並列操作)、アクティブな接続がプールに戻されるまで、次の要求はブロックされます。要求がブロックされると、バックグラウンド プール管理スレッドがガベージ コレクションを実施して、存在する可能性のあるダングリングまたは無効な接続を解放しようとします。

最大アクティブ値を明示的に指定しましたか? 使用状況に基づいて、より高い値を検討する必要があるかもしれません。「context.Connection」にアクセスして破棄しない場所はありますか?

于 2012-10-10T15:46:00.887 に答える