오퍼링 > 소프트웨어 테크놀로지 서비스 > 오픈소스 SW > 미들웨어 > 자료실

오픈소스 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 기본설정에서의 병렬처리 수행 테스트 결과

WAS 기본설정에서의 병렬처리 수행 테스트 결과

 

해결방법


-infinispan 모듈의 locking isolation, transaction mode 태그를 삭제하여 동일 세션에 대한 병렬처리가 가능하도록 설정

infinispan 모듈의 locking isolation, transaction mode 태그를 삭제하여 동일 세션에 대한 병렬처리가 가능하도록 설정

 

-태그 삭제 시 적용되는 기본 값


태그 삭제 시 적용되는 기본 값

 

-locking isolation 설정에 대한 병렬처리 테스트 결과
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로 동작합니다.


예방책


-Wildfly/Jboss 구성 간 어플리케이션과 업무 특성을 고려하여, 동일 세션에 대한 병렬처리가 가능하도록 설정해야 합니다.