2022년 4월 26일 화요일

scheduler.relocMode 값이 샌더채널의 폴링실행시 주는 현상

이전에 폴링되는 샌더채널의 이상증상에 대한 내용을 정리 후에 relocMode 값에 대해 좀더 자세하게 담아보려고 하는데요. 이전글도 미리 참고해주시면 좋을것 같습니다.

자신이 진행하는 SAP PO 프로젝트나 운영중인 시스템의 샌더채널에서 아래와 같은 현상들이 보이신다면 scheduler.relocMode 관련 설정값을 확인해보시는것도 좋을것 같습니다.
  1. 파일, JDBC 등 샌더채널의 폴링작업 시 두개의 노드에서 중복실행 됩니다.
  2. 폴링작업이 한 노드에서만 실행됩니다.
  3. 폴링설정한 시간과 다르게 불규칙하게 실행됩니다.(예를들어 더 빨리실행)

지금까지는 폴링시간을 60초로 제 자신이 생각한 기준으로 연계시스템에 가이드를 했었지만 그 이하의 실시간에 가까운 폴링시간에서는 위와 같은 현상이 드물게 보이기도 하는것 같습니다. 폴링하는 시간이 짧다고 해서 위 현상에 대한 원인이라고 하기 충분하지 않은게 해당 폴링관련 설정값들은 시스템특성, 인터페이스 시나리오, 사용자 요청사항에 따라 변경이 가능하도록 되어있으며 중복문제 해결을 위해 기존 설정값들의 의도(분산,성능 등)와 모순될 가능성이 있는부분이 있어 충분한 확인과 테스트가 필요해보입니다.


scheduler.relocMode란?

해당 설정값은 NWA > Configuration > Java System Properties > Services > XPI Service: AF Core > scheduler* 에서 확인이 가능하며 관련 설정이름들은

gracePeriod=5
relocMode=-10
syncInterval=120000
syncMethod=default
xsize=-1

이렇게 디폴트 값들이 확인이 되는데 각 각의 값들이 SAP PO에 어떠한 영향을 주는지는 알수 없지만 relocMode값의 수치의 시간나 횟수에따라 다른 서버노드로 재전송을 해야하는 의미를 갖는다고 합니다. 이 의미를 이해하기위해서는 AF스케쥴러에 대해 알아야할것 같네요.

AFScheduler는 SAP PO의 중요한 매커니즘이라고 이해를 하는데 종종 아래 글이나 다른글에서도 조금씩 언급은 했었던것 같네요.

relocMode값은 위와 같이 스케쥴러의 작업 재배치 동작을 제어하며 클러스터 환경에서는 현재 노드에서 특정횟수만큼 호출된 후 다른 노드로 재배치 될수 있다고 하는데요. 재배치가 불가능한 작업에 대해서는 실행중인 노드에서 종료될때까지 다른 노드로 재배치되지 않을수 있다고 합니다. 그외 순차큐 처리인이 EOIO모드에 대해서는 일반적으로 재배치가 불가능하다고 합니다. 이 값을 변경할 시에는 PO서버의 리스타트 작업이 필요할수 있으며 그전에 충분한 테스트 후에 진행하는 것을 권장드리고 싶습니다.

syncInterval의 값은 채널 실행 시 relocMode의 음의정수 값에 따라 AFScheduler가 노드호출 시 노드간의 동기화 관련 값일것 같은데요.. 솔직히 저도 모르지만 노드간의 동기화 이전에 재배치시 중복된 노드실행되는 현상이 보이는게 아닐까? 생각되는데 자세한 공식문서를 찾지 못하였습니다.

이런 비정상적인 스케쥴러 상태를 확인하는 페이지 예를들어 특정서버 노드만 호출 다른 인스턴스 간에 로드밸런싱을 수행하지 않는 것들을 확인 가능해보이는데 사용법을 잘 모르겠습니다.
http://<host>:<port>/AdapterFramework/scheduler/scheduler.jsp?xml
246752-The sender polling channels do not take the load balance in cluster nodes
1483974-File and JDBC sender adapter's retry not working after error

정리를 하자면 폴링되는 채널에서 노드중복현상, 설정실행과 다른 불규칙한 실행 등 이런 현상들이 보인다면 NWA의 AF스케쥴러 관련 값들(relocMode나 syncInterval 등)을 수정하면서 테스트해보시면 좋을것 같은데 운영시스템이라면 SAP의 문의 후 가이드받은 대로 진행하시는걸 추천드려요. 해당 PO의 서버, 인터페이스 등 환경이 다른 요인들이 존재할수 있기 때문입니다.

참고:
1548307-AF Scheduler: issues in relocMode<0
1593415-AF Scheduler: fixes related to relocation mode
1459890-AF Scheduler's irregular next execution time calculation
1560011-AF Scheduler: duplication of jobs in relocation mode
1355715-AF Scheduler to avooid using cluster commnication

댓글 1개:

  1. relocMode에 대한 파라메터에 대해 최근 이해한걸 정리해보면 예를들어 3으로 설정 시 한개의 서버노드에서 폴링 후 다른 노드에서 폴링한다고 하며 -3인경우 3번째 폴링마다 CPA Cache에서 검색된 URL를 호출한다고 이해가 되는군요.

    답글삭제