Sun Java System Message Queue 3.7 UR1 관리 설명서

메시지 생성이 지연되거나 느림

증상:

가능한 원인:

가능한 원인: 브로커가 백로그되고 느린 메시지 생성자로 응답했습니다.

백로그된 브로커가 브로커 메모리에 메시지를 누적시킵니다. 물리적 대상 메모리의 메시지 수와 메시지 바이트 수가 구성된 제한에 도달하면 브로커가 지정된 제한 동작에 따라 메모리 자원을 절약하려고 합니다. 다음 제한 동작은 메시지 생성자를 느리게 만듭니다.

마찬가지로 모든 물리적 대상의 브로커 전체 메모리에서 메시지 수나 메시지 바이트 수가 구성된 제한에 도달하면 브로커가 최신 메시지를 거부하여 메모리 자원을 절약하려고 합니다. 또한 물리적 대상이나 브로커 전체 제한이 제대로 설정되어 있지 않아 시스템 메모리 제한에 도달하면 브로커는 메모리 과부하를 막기 위해 점점 더 중대한 조치를 취합니다. 이러한 조치로는 메시지 생성자 억제가 있습니다.

문제의 원인을 확인하는 방법: 구성된 메시지 제한으로 인해 브로커가 메시지를 거부할 경우 브로커는 다음과 같은 예외를 반환합니다.

JMSException [C4036]: A server error occurred

브로커 로그에 다음 항목을 생성합니다.

[B2011]: Storing of JMS message from IMQconn failed

이 메시지 다음에는 제한에 도달했음을 나타내는 메시지가 표시됩니다.

[B4120]: Cannot store message on destination destName because capacity of maxNumMsgs would be exceeded.

이는 초과된 메시지 제한이 물리적 대상에 있거나

[B4024]: The maximum number of messages currrently in the system has been exceeded, rejecting message.

제한이 브로커 전체에 해당되는 경우에 표시됩니다.

좀 더 일반적으로 다음과 같은 방법으로 거부가 발생하기 전에 메시지 제한 조건을 확인할 수 있습니다.

문제를 해결하는 방법:

가능한 원인: 브로커가 지속성 메시지를 데이터 저장소에 저장할 수 없습니다.

브로커가 데이터 저장소에 액세스할 수 없거나 지속성 메시지를 데이터 저장소에 기록할 수 없는 경우 생성자 클라이언트가 차단됩니다. 위에 설명되어 있는 대상 또는 브로커 전체 메시지 제한에 도달한 경우에도 이러한 상태가 발생할 수 있습니다.

문제의 원인을 확인하는 방법: 브로커가 데이터 저장소에 기록할 수 없는 경우 브로커는 브로커 로그에 다음 항목 중 하나를 만듭니다.

[B2011]: Storing of JMS message from connectionID failed [B4004]: Failed to persist message messageID

문제를 해결하는 방법:

가능한 원인: 브로커 확인 시간 제한이 너무 짧습니다.

느린 연결 또는 CPU 사용률이 높거나 메모리 자원이 부족하여 무기력해진 메시지 서버로 인해 브로커가 지속성 메시지의 수신을 확인하는 데 연결 팩토리의 imqAckTimeout 속성 값에서 허용하는 것보다 더 많은 시간이 필요할 수 있습니다.

문제의 원인을 확인하는 방법: imqAckTimeout 값이 초과되면 브로커가 예외를 반환합니다.

JMSException [C4000]: Packet acknowledge failed

문제를 해결하는 방법: imqAckTimeout 연결 팩토리 속성 값을 변경합니다( 안정성 및 흐름 제어 참조).

가능한 원인: 생성자 클라이언트에서 JVM 제한이 발생했습니다.

문제의 원인을 확인하는 방법:

문제를 해결하는 방법: JVM을 조정합니다( Java 가상 머신 조정 참조).