Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
14.2. 트랜잭션 관리
14.2.1. 트랜잭션 검색 및 관리
관리 CLI는 트랜잭션 레코드를 검색하고 조작하는 기능을 지원합니다. 이 기능은 JBoss EAP의 관리 API와 TM 간의 상호 작용에 의해 제공됩니다.
TM은 오브젝트 저장소라는 영구 스토리지에 있는 각 보류 중인 트랜잭션 및 트랜잭션에 대한 정보를 저장합니다. 관리 API는 오브젝트 저장소를 log-store
라는 리소스로 노출합니다. 프로브
작업은 트랜잭션 로그를 읽고 각 레코드에 대한 노드 경로를 생성합니다. 로그 저장소를 새로 고쳐야 할 때마다
. 트랜잭션 로그가 표시되고 빠르게 사라지는 것은 정상입니다.
프로브
작업을 수동으로 호출할 수 있습니다
로그 저장소 새로 고침
다음 명령은 관리형 도메인에서 프로필 기본값
을 사용하는 서버 그룹의 로그 저장소를 새로 고칩니다. 독립 실행형 서버의 경우 명령에서 profile=default
를 제거합니다.
/profile=default/subsystem=transactions/log-store=log-store:probe
모든 준비 트랜잭션 보기
준비된 트랜잭션을 모두 보려면 먼저 로그 저장소를 새로 고칩니다( 로그 저장소 새로 고침참조) 파일 시스템 ls
명령과 유사하게 작동하는 다음 명령을 실행합니다.
ls /profile=default/subsystem=transactions/log-store=log-store/transactions
또는
/host=master/server=server-one/subsystem=transactions/log-store=log-store:read-children-names(child-type=transactions)
각 트랜잭션이 고유 식별자와 함께 표시됩니다. 개별 트랜잭션에 대해 개별 작업을 실행할 수 있습니다( Transaction 관리참조).
14.2.1.1. 트랜잭션 관리
트랜잭션의 속성 보기
JNDI 이름, EIS 제품 이름 및 버전 또는 해당 상태와 같은 트랜잭션에 대한 정보를 보려면 read-resource
작업을 사용합니다.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-resource
거래 참여자의 세부 정보 보기
각 트랜잭션 로그에는 참가자
라는 하위 요소가 포함되어 있습니다. 이 요소에 대한 읽기 리소스
작업을 사용하여 트랜잭션 참가자의 세부 정보를 확인합니다. 참가자가 JNDI 이름으로 식별됩니다.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=java\:\/JmsXA:read-resource
결과는 다음과 유사할 수 있습니다.
{ "outcome" => "success", "result" => { "eis-product-name" => "ActiveMQ", "eis-product-version" => "2.0", "jndi-name" => "java:/JmsXA", "status" => "HEURISTIC", "type" => "/StateManager/AbstractRecord/XAResourceRecord" } }
여기에 표시된 결과 상태는 HEURISTIC
상태로 되어 복구할 수 있습니다. 자세한 내용은 트랜잭션 참여자 복구를 참조하십시오.
특수한 경우 오브젝트 저장소에 고립된 레코드, 즉 로그에 해당 트랜잭션 레코드가 없는 XAResourceRecords를 만들 수 있습니다. 예를 들어 TM이 기록되기 전에 준비되었지만 중단된 XA 리소스는 도메인 관리 API에 액세스할 수 없습니다. 이러한 레코드에 액세스하려면 관리 옵션 expose-all-logs
를 true
로 설정해야 합니다. 이 옵션은 관리 모델에 저장되지 않으며 서버를 다시 시작할 때 false
로 복원됩니다.
/profile=default/subsystem=transactions/log-store=log-store:write-attribute(name=expose-all-logs, value=true)
이 대체 명령을 사용하면 집계된 트랜잭션의 참여자 ID를 표시할 수 있습니다.
/host=master/server=server-one/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-children-names(child-type=participants)
트랜잭션 삭제
각 트랜잭션 로그는 트랜잭션을 나타내는 트랜잭션 로그를 삭제하기 위한 삭제 작업을 지원합니다.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:delete
이는 거래의 모든 참가자도 삭제됩니다.
거래 참여자 복구
각 거래 참여자는 복구
작업을 사용하여 복구를 지원합니다.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:recover
트랜잭션 참여자의 상태가 HEURISTIC
인 경우 복구
작업에서 상태를 PREPARE
로 전환하고 주기적으로 복구 프로세스를 수행하여 커밋을 재생하도록 요청합니다.
커밋이 성공하면 참가자가 트랜잭션 로그에서 제거됩니다. 로그 저장소
에서 프로브
작업을 실행하고 참여자가 더 이상 나열되지 않았는지 확인하여 이를 확인할 수 있습니다. 이것이 마지막 참가자인 경우 거래도 삭제됩니다.
트랜잭션 참가자의 상태 새로 고침
복구가 필요한 경우 복구를 시도하기 전에 새로 고침
작업을 사용하여 복구가 계속 필요한지 확인할 수 있습니다.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:refresh
14.2.2. 트랜잭션 통계 보기
트랜잭션 관리자 통계가 활성화된 경우 트랜잭션 관리자가 처리된 트랜잭션에 대한 통계를 볼 수 있습니다. 트랜잭션 관리자 통계를 활성화하는 방법에 대한 자세한 내용은 트랜잭션 관리자 구성 을 참조하십시오.
관리 콘솔 또는 관리 CLI를 사용하여 통계를 볼 수 있습니다. 관리 콘솔에서 런타임 탭에서 트랜잭션 하위 시스템으로 이동하여 트랜잭션 통계를 사용할 수 있습니다. 관리 CLI에서 include-runtime=true
를 사용하여 읽기-리소스
작업에 통계를 볼 수 있습니다. 예를 들면 다음과 같습니다.
/subsystem=transactions:read-resource(include-runtime=true)
다음 표에서는 사용 가능한 각 통계 및 해당 설명을 보여줍니다.
표 14.2. 트랜잭션 Cryostat 통계
통계 | 설명 |
---|---|
number-of- Cryostats | 이 서버에서 트랜잭션 관리자가 처리하는 총 트랜잭션 수입니다. |
number-of-committed- Cryostats | 이 서버에서 트랜잭션 관리자가 처리하는 커밋된 트랜잭션 수입니다. |
number-of-aborted- Cryostats | 이 서버의 트랜잭션 관리자가 처리하는 중단된 트랜잭션 수입니다. |
number-of-timed-out- Cryostats | 이 서버에서 트랜잭션 관리자가 처리하는 시간 초과 트랜잭션 수입니다. 시간 초과 트랜잭션 수는 중단된 트랜잭션 수로 계산됩니다. |
number-of-heuristics | heuristic 상태의 트랜잭션 수입니다. |
number-of-inflight-transactions | 시작되었지만 아직 종료되지 않은 트랜잭션 수입니다. |
number-of-application-rollbacks | 실패가 애플리케이션인 실패한 트랜잭션 수입니다. |
number-of-resource-rollbacks | 실패가 리소스인 실패한 트랜잭션 수입니다. |
14.2.3. 트랜잭션 오브젝트 저장소
트랜잭션에는 개체를 저장할 위치가 필요합니다. 오브젝트 스토리지 옵션 중 하나는 JDBC 데이터 소스입니다. 성능이 특별한 문제가 있는 경우 JDBC 오브젝트 저장소는 파일 시스템 또는 ActiveMQ 저널 오브젝트 저장소보다 느릴 수 있습니다.
트랜잭션
하위 시스템이 트랜잭션 로그의 스토리지 유형으로 Apache ActiveMQ Artemis 저널을 사용하도록 구성된 경우 JBoss EAP의 두 인스턴스는 동일한 디렉터리를 사용하여 저널을 저장할 수 없습니다. 애플리케이션 서버 인스턴스는 동일한 위치를 공유할 수 없으며 각각 고유 위치를 구성해야 합니다.
트랜잭션 오브젝트 저장소를 손실하면 데이터 일관성이 손실될 수 있습니다. 따라서 오브젝트 저장소를 안전한 드라이브에 배치해야 합니다.
JDBC Datasource를 트랜잭션 오브젝트 저장소로 사용
다음 단계에 따라 JDBC 데이터 소스를 트랜잭션 오브젝트 저장소로 사용합니다.
-
예를 들어
TransDS
와 같은 데이터 소스를 만듭니다. 자세한 내용은 Create a non-XA 데이터 소스 만들기를 참조하십시오. 오브젝트 저장소가 제대로 작동하려면 데이터 소스의 JDBC 드라이버 가 JAR 배포가 아닌 코어 모듈로 설치해야 합니다. 데이터 소스의
jta
속성을false
로 설정합니다./subsystem=datasources/data-source=TransDS:write-attribute(name=jta, value=false)
jdbc-store-datasource
속성을 사용할 데이터 소스 이름으로 설정합니다(예:java:jboss/datasources/TransDS
)./subsystem=transactions:write-attribute(name=jdbc-store-datasource, value=java:jboss/datasources/TransDS)
use-jdbc-store
속성을true
로 설정합니다./subsystem=transactions:write-attribute(name=use-jdbc-store, value=true)
- 변경 사항을 적용하려면 JBoss EAP 서버를 다시 시작합니다.
트랜잭션 JDBC 저장소 속성
다음 표는 JDBC 개체 스토리지와 관련된 모든 사용 가능한 속성을 식별합니다.
표 14.3. 트랜잭션 JDBC 저장소 속성
속성 | 설명 |
---|---|
use-jdbc-store |
트랜잭션에 대한 JDBC 저장소를 활성화하려면 이 값을 |
jdbc-store-datasource | 스토리지에 사용되는 JDBC 데이터 소스의 JNDI 이름입니다. |
jdbc-action-store-drop-table |
시작 시 작업 저장소 테이블을 삭제하고 다시 생성할지 여부입니다. 기본값은 |
jdbc-action-store-table-prefix | 작업 저장소 테이블 이름의 접두사입니다. |
jdbc-communication-store-drop-table |
시작 시 통신 저장소 테이블을 삭제하고 다시 생성할지 여부입니다. 기본값은 |
jdbc-communication-store-table-prefix | 통신 저장소 테이블 이름의 접두사입니다. |
jdbc-state-store-drop-table |
시작 시 상태 저장소 테이블을 삭제하고 다시 생성할지 여부입니다. 기본값은 |
jdbc-state-store-table-prefix | 상태 저장소 테이블 이름의 접두사입니다. |
ActiveMQ Journal Object Store 사용
다음 단계에 따라 ActiveMQ 저널 오브젝트 저장소를 사용합니다.
use-journal-store
속성을true
로 설정합니다./subsystem=transactions:write-attribute(name=use-journal-store,value=true)
- 변경 사항을 적용하려면 JBoss EAP 서버를 다시 시작합니다.