Wcf 什么是';本机msmq消息池已满';跟踪消息是什么意思?
我一直在使用SvcTraceViewer.exe跟踪消息,这些消息是使用c#应用程序通过MSMQ传输的,我遇到了一个我不理解的信息事件 原始XML如下所示:Wcf 什么是';本机msmq消息池已满';跟踪消息是什么意思?,wcf,c#-4.0,msmq,svctraceviewer,Wcf,C# 4.0,Msmq,Svctraceviewer,我一直在使用SvcTraceViewer.exe跟踪消息,这些消息是使用c#应用程序通过MSMQ传输的,我遇到了一个我不理解的信息事件 原始XML如下所示: <E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>262242</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2015-03-02T14:54:57.3176368Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{f6fa4c52-6372-45ce-9171-1c5d789c3bf0}" />
<Execution ProcessName="MYPROCESS.EXE" ProcessID="12492" ThreadID="5" />
<Channel />
<Computer>MYCOMPUTER</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/en-GB/library/System.ServiceModel.Channels.MsmqPoolFull.aspx</TraceIdentifier>
<Description>Pool of the native MSMQ messages is full. This may affect performance.</Description>
<AppDomain>ASM.Sequoia.Reporting.ReportGenerator.exe</AppDomain>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
262242
3.
0
8.
我的计算机
(说忽略这些信息——但从8年前开始)
(不是很有用的MSDN帖子?!)
对于信息,我使用的是非事务性队列,没有排队消息(卡在队列中或正在处理),死信队列中没有任何消息。。。我通过队列发送的信息非常大,因为它包含一组序列化图像,所以大小可能高达几MB
有人知道这意味着什么吗?我想这条信息没什么好担心的。我查看了WCF源代码,发现它只是一些内部对象池已满时的诊断消息。他们使用池来重用MsmqInputMessage
对象。当池已满时,它们只将该对象留作垃圾收集。当池为空时,它们似乎也会跟踪相同的消息,在这种情况下,它们只会在发生这种情况时创建新对象。因此,在这些日志消息之后,一切都能正常工作,尽管有点不太理想,也就是说,将创建一些额外的对象并进行垃圾收集
顺便说一句,您可以在线浏览.Net源代码,也可以下载它并在VS中打开一些子项目。它位于:
以下是您的问题的一些有趣的文件:
您可以在调用MsmqDiagnostics.PoolFull
方法的位置进行搜索