was*_*igh 10 asp.net performance crash-dumps
我在生产服务器上有一个奇怪的情况.asp.net的连接排队,但CPU只有40%.此外,数据库在30%CPU下运行良好.
评论中要求的更多历史记录:
我的结论是,其他东西阻止服务器更快地处理请求.可能的嫌疑人
为了找出进程正在做什么,我创建了minidumps.
我设法创造了两个相隔20秒的MemoryDumps.这是第一个的输出:
!threadpool
CPU utilization 6%
Worker Thread: Total: 95 Running: 72 Idle: 23 MaxLimit: 200 MinLimit: 100
Work Request in Queue: 1
--------------------------------------
Number of Timers: 64
Run Code Online (Sandbox Code Playgroud)
和第二个的输出:
!threadpool
CPU utilization 9%
Worker Thread: Total: 111 Running: 111 Idle: 0 MaxLimit: 200 MinLimit: 100
Work Request in Queue: 1589
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,队列中有很多请求.
问题1:队列中有1589个请求是什么意思.这是否意味着阻止了什么?
!threadpool列表主要包含以下条目:未知函数:6a2aa293上下文:01cd1558 AsyncTimerCallbackCompletion TimerInfo @ 023a2cb0
如果我深入了解AsyncTimerCallbackCompletion
!dumpheap -type TimerCallback
Run Code Online (Sandbox Code Playgroud)
然后我查看TimerCallback中的对象,其中大多数都是类型:
System.Web.SessionState.SessionStateModule
System.Web.Caching.CacheCommon
Run Code Online (Sandbox Code Playgroud)
问题2:这些物体是否具有计时器,是否有任何意义?我应该阻止这个.如何?
主要问题我是否错过任何明显的问题,为什么我排队连接而不是最大化CPU?
我成功地在高峰时期制造了一个故障转移装置.用debugdiag分析它给了我这个警告:
Detected possible blocking or leaked critical section at webengine!g_AppDomainLock owned by thread 65 in Hang Dump.dmp
Impact of this lock
25.00% of threads blocked
(Threads 11 20 29 30 31 32 33 39 40 41 42 74 75 76 77 78 79 80 81 82 83)
The following functions are trying to enter this critical section
webengine!GetAppDomain+c9
The following module(s) are involved with this critical section
\\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\webengine.dll from Microsoft Corporation
Run Code Online (Sandbox Code Playgroud)
快速谷歌搜索不会给我任何结果.有人有线索吗?
处理队列的工作进程是真正的破坏者。可能与调用同一主机上的 Web 服务的网站连接。从而造成一种僵局。
我将 machine.config 更改为以下内容:
<processModel
autoConfig="false"
maxWorkerThreads="100"
maxIoThreads="100"
minWorkerThreads="50"
minIoThreads="50" />
Run Code Online (Sandbox Code Playgroud)
标准此 processModel 设置为 autoConfig="true"
使用新配置,网络服务器处理请求的速度足够快,不会排队。
| 归档时间: |
|
| 查看次数: |
6992 次 |
| 最近记录: |