오퍼링 > 소프트웨어 테크놀로지 서비스 > 오픈소스 SW > 미들웨어 > 자료실
[Wildfly] Session Cluster 이슈사항 및 조치방법
2021.03.10
이 사례는 Wildfly/Jboss의 기본 환경설정에 대한 이슈 사항으로, Wildfly/Jboss 구성 간 검토해야 하는 내용입니다.
-Wildfly/JBoss는 기본적으로 동일 세션에 대한 병렬처리가 되지 않도록 설정되어 있습니다.
즉, 같은 웹 브라우저에서 1개의 롱 트랜잭션이 수행 될 경우 해당 트랜잭션이 끝나기 전까지는 동일 웹 브라우저의 호출은 지연 및 에러가 발생합니다.
-다른 WAS(Weblogic, Jeus 및 Tomcat) 에서는 발생하지 않는 현상이므로 Wildfly/Jboss 구성 간 반드시 고려해야 되는 사항입니다.
-사용자가 오래 걸리는 트랜잭션을 요청 한 후 결과가 나오기 전에 동일한 웹 브라우저에서 다른 업무를 호출 할 경우 이전 트랜잭션 끝나기 전까지 응답시간 지연 및 에러 발생
-위와 같은 케이스가 반복될 경우 대기하고 있는 스레드가 누적되어 WAS 전체에 지연이 발생 할 수 있음
<로그 메세지>
-RHEL7
-wildfly10 이상 / JBoss 7.X
-Wildfly/Jboss는 기본적으로 트랜잭션 처리에 안정성을 유지하기 위해 동일 세션에 대한 병렬처리를 하지 못하도록 설정되어 있음(보수적 관점)
-WAS 기본설정에서의 병렬처리 수행 테스트 결과
-infinispan 모듈의 locking isolation, transaction mode 태그를 삭제하여 동일 세션에 대한 병렬처리가 가능하도록 설정
-locking isolation 설정에 대한 병렬처리 테스트 결과
-Wildfly/Jboss 구성 간 어플리케이션과 업무 특성을 고려하여, 동일 세션에 대한 병렬처리가 가능하도록 설정해야 합니다.
-Wildfly/JBoss는 기본적으로 동일 세션에 대한 병렬처리가 되지 않도록 설정되어 있습니다.
즉, 같은 웹 브라우저에서 1개의 롱 트랜잭션이 수행 될 경우 해당 트랜잭션이 끝나기 전까지는 동일 웹 브라우저의 호출은 지연 및 에러가 발생합니다.
-다른 WAS(Weblogic, Jeus 및 Tomcat) 에서는 발생하지 않는 현상이므로 Wildfly/Jboss 구성 간 반드시 고려해야 되는 사항입니다.
장애 현상
-사용자가 오래 걸리는 트랜잭션을 요청 한 후 결과가 나오기 전에 동일한 웹 브라우저에서 다른 업무를 호출 할 경우 이전 트랜잭션 끝나기 전까지 응답시간 지연 및 에러 발생
-위와 같은 케이스가 반복될 경우 대기하고 있는 스레드가 누적되어 WAS 전체에 지연이 발생 할 수 있음
<로그 메세지>
테스트 환경
-RHEL7
-wildfly10 이상 / JBoss 7.X
장애 원인
-Wildfly/Jboss는 기본적으로 트랜잭션 처리에 안정성을 유지하기 위해 동일 세션에 대한 병렬처리를 하지 못하도록 설정되어 있음(보수적 관점)
-WAS 기본설정에서의 병렬처리 수행 테스트 결과
해결방법
-infinispan 모듈의 locking isolation, transaction mode 태그를 삭제하여 동일 세션에 대한 병렬처리가 가능하도록 설정
-태그 삭제 시 적용되는 기본 값
-locking isolation 설정에 대한 병렬처리 테스트 결과
[locking isolation 옵션 설명]
-locking isolation : 동시에 같은 세션 데이터를 수정하지 못하도록 격리하는 방식에 대한 설정 값으로 NONE, READ_UNCOMMITTED,
READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE 모드가 있습니다.
> NONE : deprecated 되었습니다. READ_COMMITTED로 동작합니다.
> READ_UNCOMMITTED : 트랜잭션 A가 특정 데이터를 수정하고 있는 중에 트랜잭션 B가 데이터를 read하면 A가 수정한 데이터를 read합니다.
> READ_COMMITTED : 트랜잭션 A가 특정 데이터를 수정하고 있는 중에 트랜잭션 B가 데이터를 read하면 A가 수정하기 전 데이터를 read합니다.(커밋된 데이터만 read합니다.)
> REPEATABLE_READ : 데이터를 읽는 순간 데이터가 커밋되어 모든 트랜잭션이 동일한 데이터를 접근하게 됩니다.
> SERIALIZABLE : deprecated 됬습니다. REPEATABLE_READ로 동작합니다.
READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE 모드가 있습니다.
> NONE : deprecated 되었습니다. READ_COMMITTED로 동작합니다.
> READ_UNCOMMITTED : 트랜잭션 A가 특정 데이터를 수정하고 있는 중에 트랜잭션 B가 데이터를 read하면 A가 수정한 데이터를 read합니다.
> READ_COMMITTED : 트랜잭션 A가 특정 데이터를 수정하고 있는 중에 트랜잭션 B가 데이터를 read하면 A가 수정하기 전 데이터를 read합니다.(커밋된 데이터만 read합니다.)
> REPEATABLE_READ : 데이터를 읽는 순간 데이터가 커밋되어 모든 트랜잭션이 동일한 데이터를 접근하게 됩니다.
> SERIALIZABLE : deprecated 됬습니다. REPEATABLE_READ로 동작합니다.
예방책
-Wildfly/Jboss 구성 간 어플리케이션과 업무 특성을 고려하여, 동일 세션에 대한 병렬처리가 가능하도록 설정해야 합니다.
-
다음 글다음 글이 없습니다.