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

6장 물리적 대상 관리

이 장에서는 imqcmd 유틸리티를 사용하여 물리적 대상을 관리하는 방법에 대해 설명합니다. Message QueueTM 메시지는 브로커의 물리적 대상을 통해 사용자 클라이언트로 라우팅됩니다. 브로커는 물리적 대상에 연결된 메모리와 영구 저장소를 관리하고 해당 동작을 설정합니다.

브로커 클러스터에서 브로커 하나에 물리적 대상을 만들면 클러스터가 해당 물리적 대상을 모든 다른 브로커에 전파합니다. 브로커는 공동 작업을 통해 클러스터 전체에서 메시지 경로를 지정하기 때문에 응용 프로그램 클라이언트는 항목에 가입하거나 클러스터의 모든 브로커에 있는 대기열을 사용할 수 있습니다. 하지만 메시지가 처음 생성된 브로커에서만 해당 메시지에 대한 지속성과 확인을 관리할 수 있습니다.

이 장은 다음 내용으로 구성되어 있습니다.

표 13–5는 물리적 대상 관리와 이러한 작업 수행에 사용되는 imqcmd 하위 명령에 대한 전체 참조 정보를 제공합니다.

물리적 대상에 대한 소개는 Message Queue 기술 개요를 참조하십시오.


주 –

클라이언트 응용 프로그램은 물리적 대상과 상호 작용할 때마다 Destination 객체를 사용합니다. 공급자 독립성과 이식성을 위해 클라이언트는 대상 관리 객체라는 관리자 생성 대상 객체를 일반적으로 사용합니다. 8 장, 관리 대상 객체 관리에서 설명한 대로 클라이언트 응용 프로그램에 사용하도록 관리 대상 객체를 구성할 수 있습니다.


명령 유틸리티 사용

Message Queue 명령 유틸리티(imqcmd)를 사용하여 물리적 대상을 관리합니다. imqcmd 명령 구문은 다른 브로커 서비스 관리에 사용할 때의 구문과 동일합니다.

imqcmd와 해당 하위 명령과 옵션에 대한 자세한 내용은 13 장, 명령줄 참조에서 확인할 수 있습니다.

하위 명령

표 6–1에는 이 장에서 설명하는 imqcmd 하위 명령이 나열되어 있습니다. 이러한 하위 명령에 대한 자세한 내용은 물리적 대상 관리를 참조하십시오.

표 6–1 명령 유틸리티의 물리적 대상 하위 명령

하위 명령 및 인수 

설명 

compact dst

파일 기반 데이터 저장소에서 하나 이상의 물리적 대상을 압축합니다. 

create dst

물리적 대상을 만듭니다. 

destroy dst

물리적 대상을 완전 삭제합니다. 

list dst

브로커의 물리적 대상을 나열합니다. 

metrics dst

물리적 대상 메트릭을 표시합니다. 

pause dst

브로커에서 하나 이상의 물리적 대상을 일시 중지합니다. 

purge dst

물리적 대상을 완전 삭제하지 않고 물리적 대상에 있는 모든 메시지를 제거합니다. 

query dst

물리적 대상의 정보를 쿼리 및 표시합니다. 

resume dst

브로커에서 일시 중지된 하나 이상의 물리적 대상을 다시 시작합니다. 

update dst

대상의 등록 정보를 업데이트합니다. 

물리적 대상 만들기

물리적 대상을 만들려면 imqcmd create 하위 명령을 사용합니다. 다음은 create 하위 명령 구문입니다.

create dst -t destType -n 
destName [-o property=value
] [-o property=value1]

예를 들어, 대기열 대상을 만들려면 다음과 같이 명령을 입력합니다.


imqcmd create dst -n myQueue -t q -o "maxNumActiveConsumers=5"

주제 대상을 만들려면 다음과 같이 명령을 입력합니다.


imqcmd create dst -n myTopic -t t -o "maxBytesPerMsg=5000"

물리적 대상을 만들 때 다음을 지정해야 합니다.

물리적 대상을 업데이트할 때 등록 정보도 설정할 수 있습니다.

많은 물리적 대상 등록 정보가 브로커 메모리 자원과 메시지 흐름에 영향을 미칩니다. 예를 들어, 물리적 대상에 보낼 수 있는 생성자 수, 생성자가 보낼 수 있는 메시지 수와 크기, 물리적 대상 제한에 도달할 때 브로커가 수행해야 하는 응답 등을 지정할 수 있습니다. 이러한 제한은 브로커 구성 등록 정보를 통해 제어되는 브로커 전체 제한과 비슷합니다.

다음 등록 정보는 대기열 대상과 주제 대상 모두에 사용됩니다.

다음은 대기열 대상에만 사용되는 등록 정보입니다.

물리적 대상 등록 정보에 대한 자세한 내용은 15 장, 물리적 대상 등록 정보 참조을 참조하십시오.

자동 생성 대상의 경우 브로커의 인스턴스 구성 파일에 기본 등록 정보 값을 설정합니다. 자동 생성 등록 정보에 대한 자세한 내용은 표 14–3을 참조하십시오.

물리적 대상 나열

물리적 대상의 현재 속성 값, 물리적 대상과 연관된 생성자 또는 사용자 수 및 메시징 메트릭(물리적 대상의 메시지 수 및 크기 등)에 대한 정보를 얻을 수 있습니다.

정보를 얻으려는 물리적 대상을 찾으려면 list dst 하위 명령을 사용하여 브로커의 모든 물리적 대상을 나열합니다. 다음은 list dst 하위 명령 구문입니다.

list dst [-t destType] [-tmp]

이 명령은 지정된 유형의 물리적 대상을 나열합니다. 대상 유형(-t) 옵션 값은 q(대기열) 또는 t(주제)입니다.

대상 유형을 생략하면 모든 유형의 물리적 대상이 나열됩니다.

list dst 하위 명령에서는 나열할 대상의 유형을 지정하거나 임시 대상을 포함하도록 지정할 수도 있습니다(-tmp 옵션 사용). 임시 대상은 일반적으로 다른 클라이언트에 보낸 메시지에 대한 응답을 수신하기 위해 클라이언트가 만듭니다.

예를 들어, myHost의 포트 4545에서 실행 중인 브로커의 모든 물리적 대상을 나열하려면 다음 명령을 입력합니다.

imqcmd list dst -b myHost:4545

주제만 포함하도록 t 대상 유형을 지정하지 않는 한 mq.sys.dmq 사용 불능 메시지 대기열에 대한 정보가 항상 다른 물리적 대상과 함께 표시됩니다.

물리적 대상 정보 표시

물리적 대상의 현재 등록 정보에 대한 정보를 보려면 query dst 하위 명령을 사용합니다. 다음은 query dst 하위 명령 구문입니다.

query dst -t destType -n 
destName

이 명령은 지정한 유형과 이름의 대상에 대한 정보를 나열합니다.예를 들어, 다음 명령은 XQueue 대기열 대상에 대한 정보를 표시합니다.

imqcmd query dst -t q -n XQueue -u admin

다음과 같은 결과가 출력됩니다.


------------------------------------
Destination Name    Destination Type
------------------------------------
XQueue              Queue

On the broker specified by:

-------------------------
Host         Primary Port
-------------------------
localhost    7676

Destination Name                      XQueue
Destination Type                      Queue
Destination State                     RUNNING
Created Administratively              true

Current Number of Messages            0
Current Total Message Bytes           0
Current Number of Producers           0
Current Number of Active Consumers    0
Current Number of Backup Consumers    0

Max Number of Messages                unlimited (-1)
Max Total Message Bytes               unlimited (-1)
Max Bytes per Message                 unlimited (-1)
Max Number of Producers               100
Max Number of Active Consumers        1
Max Number of Backup Consumers        0

Limit Behavior                        REJECT_NEWEST
Consumer Flow Limit                   1000
Is Local Destination                  false
Local Delivery is Preferred           false
Use Dead Message Queue                true

출력에는 해당 대상에 연관되어 있는 생성자와 사용자 수도 표시됩니다. 대기열 대상의 경우 이 수에는 활성 사용자와 백업 사용자가 포함됩니다.

update dst 하위 명령을 사용하여 하나 이상의 등록 정보 값을 변경할 수 있습니다( 물리적 대상 등록 정보 업데이트 참조).

물리적 대상 등록 정보 업데이트

update dst 하위 명령과 업데이트할 등록 정보를 지정하는 -o 옵션을 사용하여 물리적 대상의 등록 정보를 변경할 수 있습니다. 다음은 update dst 하위 명령 구문입니다.

update dst -t destType -n 
destName -o property=value [[-o 
property=value1]…]

이 명령은 지정한 대상에서 지정한 등록 정보의 값을 업데이트합니다.등록 정보 이름은 표 15–1에 나열된 등록 정보 중 하나일 수 있습니다.

-o 옵션을 여러 번 사용하여 여러 등록 정보를 업데이트할 수 있습니다. 예를 들어, 다음 명령은 maxBytesPerMsg 등록 정보를 1000으로 변경하고 MaxNumMsgs 등록 정보를 2000으로 변경합니다.

imqcmd update dst -t q -n myQueue -o "maxBytesPerMsg=1000"
              -o "maxNumMsgs=2000" -u admin

업데이트할 수 있는 등록 정보 목록은 15 장, 물리적 대상 등록 정보 참조을 참조하십시오.

update dst 하위 명령을 사용하여 물리적 대상의 유형을 업데이트하거나 isLocalOnly 등록 정보를 업데이트할 수 없습니다.


주 –

사용 불능 메시지 대기열은 등록 정보가 다른 대상과 약간 차이가 나는 특수한 물리적 대상입니다. 자세한 내용은 사용 불능 메시지 대기열 사용을 참조하십시오.


물리적 대상 일시 중지 및 다시 시작

물리적 대상을 일시 중지하여 생성자에서 대상으로, 대상에서 사용자로 또는 두 가지 모두에 대한 메시지 전달을 제어할 수 있습니다. 특히, 대상으로의 메시지 흐름을 일시 중지하면 메시지 생성이 사용보다 훨씬 빠를 때 대상에서 메시지가 넘치는 것을 방지할 수 있습니다.물리적 대상을 압축하려면 먼저 일시 중지해야 합니다.

물리적 대상에서 주고 받는 메시지 전달을 일시 중지하려면 pause dst 하위 명령을 사용합니다. 다음은 pause dst 하위 명령 구문입니다.

pause dst [-t destType -n 
destName] [-pst pauseType]

지정된 유형과 이름의 대상에서 사용자에게 메시지 전달(-pst CONSUMERS), 생성자로부터 메시지 전달(-pst PRODUCERS) 또는 두 가지 모두(-pst ALL)를 일시 중지합니다.대상 유형과 이름을 지정하지 않은 경우 모든 물리적 대상이 일시 중지됩니다. 기본값은 ALL입니다.

예:

imqcmd pause dst -n myQueue -t q -pst PRODUCERS -u admin
imqcmd pause dst -n myTopic -t t -pst CONSUMERS -u admin

일시 중지된 대상으로의 전달을 다시 시작하려면 resume dst 하위 명령을 사용합니다. 다음은 resume dst 하위 명령 구문입니다.

resume dst [-t destType -n 
destName]

이 하위 명령은 지정된 유형과 이름의 일시 중지된 대상으로의 메시지 전달을 다시 시작합니다.대상 유형과 이름을 지정하지 않으면 모든 대상이 다시 시작됩니다.

예:

imqcmd resume dst -n myQueue -t q

브로커 클러스터에서 물리적 대상 인스턴스는 클러스터의 각 브로커에 있습니다. 각 인스턴스를 개별적으로 일시 중지해야 합니다.

물리적 대상 제거

현재 물리적 대상의 대기열에 들어 있는 모든 메시지를 제거할 수 있습니다. 물리적 대상을 제거하는 것은 대상에 저장된 모든 메시지를 삭제하는 것을 의미합니다.

누적된 메시지가 시스템의 자원을 너무 많이 차지하는 경우에 메시지를 제거할 수 있습니다. 이런 상황은 대기열에 등록된 사용자 클라이언트가 없는 상태에서 너무 많은 메시지를 받으면 발생할 수 있습니다. 주제의 비활성 영구 가입자가 활성화되지 않는 경우에도 발생할 수 있습니다. 두 경우 모두 불필요한 메시지가 보존됩니다.

물리적 대상의 메시지를 제거하려면 purge dst 하위 명령을 사용합니다. 다음은 purge dst 하위 명령 구문입니다.

purge dst -t destType -n 
destName

이 하위 명령은 지정한 유형과 이름의 물리적 대상에서 메시지를 제거합니다.

예:

imqcmd purge dst -n myQueue -t q -u admin
imqcmd purge dst -n myTopic -t t -u admin

브로커를 종료했다가 다시 시작할 때 오래된 메시지가 전달되지 않게 하려면 -reset messages 옵션을 사용하여 오래된 메시지를 제거합니다. 예를 들면 다음과 같습니다.

imqbrokerd -reset messages -u admin

그러면 브로커를 다시 시작한 후에 대상을 제거할 필요가 없습니다.

브로커 클러스터에서 물리적 대상 인스턴스는 클러스터의 각 브로커에 있습니다. 이러한 대상을 개별적으로 제거해야 합니다.

물리적 대상 완전 삭제

물리적 대상을 완전 삭제하려면 destroy dst 하위 명령을 사용합니다. 다음은 destroy dst 하위 명령 구문입니다.

destroy dst -t destType -n 
destName

이 하위 명령은 지정한 유형과 이름의 물리적 대상을 완전 삭제합니다.

예:

imqcmd destroy dst -t q -n myQueue -u admin

물리적 대상을 완전 삭제하면 대상에 있는 모든 메시지가 제거되고 대상이 브로커에서 제거됩니다. 이 작업은 다시 되돌릴 수 없습니다.

사용 불능 메시지 대기열은 완전 삭제할 수 없습니다.

물리적 대상 압축

파일 기반 데이터 저장소를 메시지의 영구 저장소로 사용하는 경우, 필요할 때마다 디스크 사용률을 모니터하고 디스크를 압축할 수 있습니다.

파일 기반 메시지 저장소는 메시지가 보관될 물리적 대상에 해당하는 디렉토리에 저장되도록 구성됩니다. 각 물리적 대상 디렉토리에서 대부분의 메시지는 가변 크기 레코드로 구성되는 단일 파일에 저장됩니다. (단편화를 줄이기 위해 크기가 구성 가능한 임계값을 초과하는 메시지는 자체의 개별 파일에 저장).

레코드 파일에서 다양한 크기의 메시지가 지속되다가 제거될 때 파일에서 사용 가능한 레코드가 다시 사용되지 않는 공간이 생길 수 있습니다.

사용되지 않은 사용 가능한 레코드를 관리하려면 명령 유틸리티의 하위 명령을 사용하여 물리적 대상별 디스크 사용률을 모니터하고 사용률이 떨어지면 사용 가능한 디스크 공간을 확보합니다.

물리적 대상 디스크 사용률 모니터링

물리적 대상의 디스크 사용률을 모니터하려면 다음과 같은 명령을 사용합니다.

imqcmd metrics dst -t q -n myQueue -m dsk -u admin

다음과 같은 결과가 출력됩니다.


--------------------------------------
Reserved   Used      Utilization Ratio
--------------------------------------
806400     804096    99
1793024    1793024   100
2544640    2518272   98

하위 명령 출력에서 각 열의 의미는 다음과 같습니다.

표 6–2 물리적 대상 디스크 사용률 메트릭

메트릭 

설명 

예약됨

활성 메시지가 보관된 레코드와 재사용 대기 중인 사용 가능한 레코드를 포함한 모든 레코드가 사용하는 디스크 공간(바이트) 

사용됨

활성 메시지가 보관된 레코드에서 사용하는 디스크 공간(바이트) 

사용률

예약된 디스크 공간에서 사용되는 디스크 공간의 비율. 비율이 높을수록 활성 메시지를 보관하는 데 사용되고 있는 디스크 공간이 많은 것입니다.

사용되지 않은 물리적 대상 디스크 공간 확보

특정 물리적 대상을 사용하는 메시징 응용 프로그램의 특성에 따라 디스크 사용률 패턴이 달라집니다. 물리적 대상에 유입 및 유출되는 메시지의 상대적 흐름과 상대적 메시지 크기에 따라 예약된 디스크 공간이 점점 더 커질 수 있습니다.

메시지 생성 속도가 메시지 사용 속도보다 큰 경우 사용 가능한 레코드를 다시 사용하고 사용률을 높은 수준으로 유지해야 합니다. 그러나 메시지 생성 속도가 메시지 사용 속도보다 작거나 비슷한 경우 사용률이 낮아도 됩니다.

일반적으로 예약된 디스크 공간은 안정적으로 유지하고 사용률은 높게 유지해야 합니다. 일반적으로 시스템에서 예약된 디스크 공간은 매우 일정하게 유지되고 사용률이 높은(75% 이상) 안정적인 상태에 도달하는 경우 사용되지 않는 디스크 공간을 확보할 필요가 없습니다. 시스템에서 안정적인 상태에 도달하고 사용률이 낮은(50% 이하) 경우 디스크를 압축하여 사용 가능한 레코드가 사용 중인 디스크 공간을 확보할 수 있습니다.

compact dst 하위 명령을 사용하여 데이터 저장소를 압축합니다. 다음은 compact dst 하위 명령 구문입니다.

compact dst [-t destType -n 
destName]

이 하위 명령은 파일 기반 데이터 저장소에서 지정된 유형과 이름의 물리적 대상을 압축합니다.대상 유형과 이름을 지정하지 않으면 모든 대상이 압축됩니다. 물리적 대상을 압축하려면 먼저 일시 중지해야 합니다.

예약된 디스크 공간이 점점 증가하는 경우 대상 메모리 제한 등록 정보와 제한 동작(표 15–1 참조)을 설정하여 대상의 메모리 관리를 다시 구성해야 합니다.

Procedure사용되지 않는 물리적 대상 디스크 공간을 확보하는 방법

  1. 대상을 일시 중지합니다.


    imqcmd pause dst -t q -n myQueue -u admin
  2. 디스크를 압축합니다.


    imqcmd compact dst -t q -n myQueue -u admin
  3. 물리적 대상을 다시 시작합니다.


    imqcmd resume dst -t q -n myQueue -u admin

    대상 유형과 이름을 지정하지 않으면 이 작업이 모든 물리적 대상에 대해 수행됩니다.

사용 불능 메시지 대기열 사용

사용 불능 메시지 대기열 mq.sys.dmq는 브로커 및 다른 물리적 대상의 사용 불능 메시지를 보관하는 시스템 생성 물리적 대상입니다. 사용 불능 메시지 대기열은 모니터링, 시스템 효율성 조정 및 문제 해결을 위한 도구입니다. “사용 불능 메시지”의 용어 정의와 사용 불능 메시지 대기열에 대한 자세한 내용은 Message Queue 기술 개요를 참조하십시오.

브로커는 시작될 때 사용 불능 메시지 대기열을 자동으로 생성합니다. 브로커는 메시지를 처리할 수 없거나 수명이 만료된 경우 해당 메시지를 대기열에 넣습니다. 다른 물리적 대상도 사용 불능 메시지 대기열을 사용하여 제거된 메시지를 보관합니다. 사용 불능 메시지 대기열을 사용하면 시스템 문제 해결에 유용한 정보를 확인할 수 있습니다.

사용 불능 메시지 대기열 사용 구성

기본적으로 물리적 대상은 사용 불능 메시지 대기열을 사용하도록 구성됩니다. 물리적 대상 등록 정보 useDMQ를 설정하여 물리적 대상에서 사용 불능 메시지 대기열을 사용 불가능하게 하거나 사용 가능하게 할 수 있습니다.

다음 예에서는 기본적으로 사용 불능 메시지 대기열을 사용하는 myDist 대기열을 만듭니다.

imqcmd create dst -n myDist -t q

다음 예에서는 동일한 대기열에 대해 사용 불능 메시지 대기열을 사용 불가능하게 합니다.

imqcmd update dst -n myDist -t q -o useDMQ=false

imq.autocreate.destination.useDMQ 브로커 등록 정보를 설정하여 브로커의 모든 자동 생성 물리적 대상이 사용 불능 메시지 대기열을 사용 가능하게 하거나 사용 불가능하게 할 수 있습니다.

사용 불능 메시지 대기열 관리

Message Queue 명령 유틸리티(imqcmd)를 사용하면 약간의 차이는 있겠지만 다른 대기열을 관리하는 것처럼 사용 불능 메시지 대기열을 관리할 수 있습니다. 예를 들어, 사용 불능 메시지 대기열은 시스템에서 생성되기 때문에 사용자가 생성, 일시 중지 또는 완전 삭제할 수 없습니다. 또한 표 6–3에서 표시된 것처럼 사용 불능 메시지 대기열의 기본값은 경우에 따라 일반 대기열의 기본값과 다를 수도 있습니다.

사용 불능 메시지 대기열 등록 정보

사용 불능 메시지 대기열은 다른 대기열과 같은 방법으로 구성하지만 특정 물리적 대상 등록 정보가 적용되지 않거나 다른 기본값을 갖습니다. 표 6–3에는 사용 불능 메시지 대기열에서 고유한 방법으로 처리하는 대기열 등록 정보가 나열되어 있습니다.

표 6–3 사용 불능 메시지 대기열에서 처리하는 표준 물리적 대상 등록 정보

등록 정보 

사용 불능 메시지 대기열의 고유한 처리 

limitBehavior

사용 불능 메시지 대기열의 기본값은 REMOVE_OLDEST입니다. 다른 대기열의 기본값은 REJECT_NEWEST입니다.사용 불능 메시지 대기열에는 흐름 제어가 지원되지 않습니다.

localDeliveryPreferred

사용 불능 메시지 대기열에 적용되지 않습니다. 

maxNumMsgs

사용 불능 메시지 대기열의 기본값은 1000입니다. 다른 대기열의 기본값은 -1(무제한)입니다.

maxNumProducers

사용 불능 메시지 대기열에 적용되지 않습니다. 

maxTotalMsgBytes

사용 불능 메시지 대기열의 기본값은 10MB입니다. 다른 대기열의 기본값은 -1(무제한)입니다.

isLocalOnly

브로커 클러스터에서 사용 불능 메시지 대기열은 항상 전역 물리적 대상이며 이 등록 정보는 false로 영구 설정됩니다.

메시지 내용

브로커는 헤더와 등록 정보 데이터만 유지하고 전체 메시지를 사용 불능 메시지 대기열에 넣거나 메시지 본문 내용을 삭제할 수 있습니다. 기본적으로 사용 불능 메시지 대기열은 전체 메시지를 저장합니다.

사용 불능 대기열의 크기를 줄이거나 사용 불능 메시지를 복원하지 않으려면 imq.destination.DMQ.truncateBody 브로커 등록 정보를 true로 설정하는 것을 고려해 보십시오.

imqcmd update bkr -o imq.destination.DMQ.truncateBody=true

그러면 메시지 본문이 삭제되고 헤더와 등록 정보 데이터만 유지됩니다.

사용 불능 메시지 로깅 사용

사용 불능 메시지 로깅은 기본적으로 비활성화됩니다. 사용 불능 메시지 로깅을 사용하면 브로커에서 다음 이벤트를 기록할 수 있습니다.

다음 명령은 사용 불능 메시지 로깅을 활성화합니다.

imqcmd update bkr -o imq.destination.logDeadMsgs=true

사용 불능 메시지 로깅은 사용 불능 메시지 대기열을 사용하는 모든 물리적 대상에 적용됩니다. 개별 물리적 대상에 대해 로깅을 활성화하거나 비활성화할 수 없습니다.