DebugDiag 报告线程正在调用 GC.清理太频繁.是什么进程生成了该线程



我使用的是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 应用程序,或者它是否由我们的一位开发人员创建的东西控制。

如何确定生成此线程的对象?

此线程由 OpenAccess 运行时生成。

OpenAccess 维护一个连接池,其可配置的"最大活动连接数"值 - 默认值为 10。当所有连接都已发出(并行操作)时,下一个请求将阻塞,直到活动连接返回到池中。如果请求被阻止,后台池管理线程会尝试强制实施垃圾回收,以释放可能存在的任何悬空/无效连接。

是否已明确指定最大活动值?也许您应该根据您的使用情况考虑更高的值。你有没有访问"上下文"的地方。连接',不处理它?

最新更新