저장소 할당량이 MSMQ 큐를 초과했습니다. 큐에 메시지를 더 이상 저장할 수 없습니다.
Message Queuing의 큐 할당량에 도달했습니다.
과도한 메시지 개수 축소
이 문제를 해결하려면:
큐에 있는 기존 메시지를 처리하여 과도한 메시지 개수를 큐 할당량 임계값 아래로 줄입니다. 메시지가 큐에 추가되는 속도보다 더 빠르게 처리되고 있는지 확인합니다. 이렇게 하려면 추가 하드웨어가 필요하거나 솔루션 아키텍처를 변경해야 할 수 있습니다.
지정된 큐 할당량을 높일 수도 있습니다. 메시지 큐의 큐 할당량에 대한 자세한 내용은 Microsoft 기술 자료 문서 899612( http://go.microsoft.com/fwlink/?LinkID=107359)를 참조하세요.
앞으로 이 문제를 피하려면 보내는 응용 프로그램이 메시지를 보내는 대상 컴퓨터에서 NACK(부정 승인)를 요청해야 합니다. NACK가 보내는 응용 프로그램으로 반환되어 대상 큐 또는 컴퓨터에 대한 할당량에 도달했음을 나타내면, 보내는 응용 프로그램은 메시지 전송을 중지하거나 메시지를 다른 대상으로 오프로드할 수 있습니다. Nack 및 Ack가 발신자에 의해 프로그램 방식으로 요청됩니다. 자세한 내용은 MSMQ 및 .NET의 안정적인 메시징( http://go.microsoft.com/fwlink/?LinkID=95381)을 참조하세요.
메시지 큐에서 들어오는 메시지 및 나가는 메시지와 관련된 다양한 데이터 요소를 모니터링하려면 perfmon 명령줄 도구를 사용할 수 있습니다.
이 절차를 수행하려면 관리자 그룹의 구성원이거나 적절한 권한을 위임받아야 합니다.
데이터 모니터링을 위해 perfmon을 사용하려면:
명령 프롬프트를 엽니다. 명령 프롬프트를 열려면 시작을 클릭합니다. 검색 상자에 cmd를 입력하고 <Enter> 키를 누릅니다.
명령 프롬프트에서 Perfmon을 입력하고 Enter 키를 누릅니다.
콘솔 트리의 모니터링 도구 아래에서 성능 모니터를 클릭합니다.
세부 정보 창에서 녹색 더하기 기호(+)를 클릭하여 모니터를 추가합니다.
카운터 추가 탭의 카운터 아래에서 MSMQ 서비스 옆에 있는 더하기 기호(+)를 클릭합니다.
필요한 적절한 카운터를 선택합니다.
추가를 클릭한 다음 확인을 클릭합니다.
자세한 내용은 이벤트 ID 2182( http://technet.microsoft.com/ko-kr/library/dd337533(WS.10).aspx)를 참조하세요.
Target | Microsoft.MSMQ.10.0.Servers | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
Alert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.MSMQ.10.0.Rule.Alert.Event2182" Enabled="false" Target="Microsoft.MSMQ.10.0.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>AvailabilityHealth</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">2182</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">EventSourceName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="Microsoft.MSMQ.10.0.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="Alert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.10.0.Rule.Alert.Event2182.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
<Custom1/>
<Custom2/>
<Custom3/>
<Custom4/>
<Custom5/>
<Custom6/>
<Custom7/>
<Custom8/>
<Custom9/>
<Custom10/>
</WriteAction>
</WriteActions>
</Rule>