Przekroczono limit przydziału kolejki usługi MSMQ. W kolejce nie można zapisać więcej komunikatów.
Osiągnięto limit przydziału kolejki usługi kolejkowania komunikatów.
Zmniejsz liczbę komunikatów oczekujących
Aby rozwiązać ten problem:
Ukończ przetwarzanie komunikatów znajdujących się w kolejce, aby zmniejszyć liczbę komunikatów oczekujących poniżej progu limitu przydziału. Upewnij się, że przetwarzanie komunikatów odbywa się szybciej niż ich dodawanie do kolejki. Może to wymagać rozbudowy sprzętu lub zmian architektury systemu.
Można też zwiększyć dany limit przydziału. Więcej informacji o limitach przydziału kolejek usługi kolejkowania komunikatów znajduje się w artykule 899612 w bazie wiedzy Microsoft Knowledge Base ( http://go.microsoft.com/fwlink/?LinkID=107359).
Aby uniknąć tego problemu w przyszłości, aplikacja wysyłająca powinna żądać potwierdzeń negatywnych (NACK) z komputera, do którego wysyła komunikaty. Gdy do aplikacji wysyłającej zostanie zwrócony komunikat NACK informujący o osiągnięciu limitu przydziału docelowej kolejki lub komputera, aplikacja może przestać wysyłać komunikaty lub wybrać dla nich inne miejsce docelowe, aby nie obciążać dotychczasowego adresata. Potwierdzeń NACK i ACK żąda programowo nadawca. Aby uzyskać więcej informacji, zobacz artykuł o niezawodnej komunikacji przy użyciu usługi MSMQ i platformy .NET ( http://go.microsoft.com/fwlink/?LinkID=95381).
Przy użyciu narzędzia wiersza polecenia perfmon można monitorować różne dane dotyczące komunikatów przychodzących i wychodzących usługi kolejkowania komunikatów.
Aby wykonać tę procedurę, należy być członkiem grupy administratorów lub posiadać odpowiednie oddelegowane uprawnienia.
Aby użyć programu perfmon do monitorowania danych:
Otwórz okno wiersza polecenia. Aby otworzyć okno wiersza polecenia, kliknij przycisk Start. W polu wyszukiwania wpisz cmd i naciśnij klawisz ENTER.
W wierszu polecenia wpisz Perfmon i naciśnij klawisz ENTER.
W drzewie konsoli w sekcji Narzędzia monitorowania kliknij opcję Monitor wydajności.
W okienku szczegółów kliknij zielony znak plus (+), aby dodać monitor.
Na karcie Dodawanie liczników w sekcji Liczniki kliknij znak plus (+) obok pozycji Usługa MSMQ.
Zaznacz potrzebne liczniki.
Kliknij przycisk Dodaj, a następnie przycisk OK.
Więcej informacji znajduje się w artykule dotyczącym zdarzenia o identyfikatorze 2182 ( http://technet.microsoft.com/en-us/library/dd337533(WS.10).aspx)
Target | Microsoft.MSMQ.6.3.Servers | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Event_ID | 2182 | ||
Event Source | $Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$ | ||
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.6.3.Rule.Alert.Event2182" Enabled="false" Target="Microsoft.MSMQ.6.3.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">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="Microsoft.MSMQ.6.3.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.6.3.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>