繁体   English   中英

WCF性能问题:停止处理请求

[英]WCF Performance issue: requests are stopped getting processed

我在WCF服务中遇到了问题。 一段时间后它将停止处理请求。 我们计划定期(每小时近4次)自动回收以修复它。 我已经从服务器上获取了内存转储,似乎1个线程(实际上使用企业库进行日志记录)已被锁定,其他线程正在等待它,但是我有些困惑。

我使用Windbg工具获取性能统计信息:-!线程为我提供以下数据:-

74   60 202c 000000000f1fce10  3029220 Preemptive  0000000000000000:0000000000000000 000000000252a6b0 1     MTA (Threadpool Worker) System.Messaging.MessageQueueException 00000003ffc67350

!syncblk给我以下:-

Syncblk输出

日志记录组件是异步的,并将消息发送到MSMQ。 当外部系统异常到来时,一个线程被锁定,它显示大约有1000个线程正在等待(syncbklk中的Monitorthread),所有这些线程都在等待进入日志记录。 我不明白的是,为什么1个线程被锁定却拒绝其他线程,因为未阻止MSMQ,因为其他应用程序使用相同的MSMQ且工作正常。 其次,日志记录组件只是将消息发送给MSMQ,我们可以认为它对实际应用程序有潜在的阻碍。 记录中使用的异步代码是:

enter code here action = new Action<LogEntry>(Logger.Write);
            IAsyncResult iAr = action.BeginInvoke(entry, CallbackHandler, action);action.EndInvoke(iar);

请就以上问题陈述提出建议。 例外详情


如windbg工具中所示,您正在线程74上获取System.Messaging.MessageQueueException异常。您可以使用windbg工具中的!dso命令获取异常消息,例如“资源不足(类似)。

如异常图中所示,您的线程被阻塞,因为除非它不执行将数据发送到MSMQ的操作,否则它将不会被释放,并且其他线程也会由于该线程而卡住。

有关更多信息,请单击下面的链接。 https://blogs.msdn.microsoft.com/johnbreakwell/2006/09/18/insufficient-resources-run-away-run-away/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM