2023년 4월 1일 토요일

SAP PO 메시징 시스템 병렬처리 제한 파라메터 사용방법

SAP PO 메시징 시스템 내부의 인터페이스 작업스레드의 처리가 정체 되거나 개선이 필요한 경우 사용되는 파라메터나 기능들에 대해 정리를 하였습니다.


Maximum Concurrency

채널이 데이터 베이스에 허용하는 병렬 연결 수라고 하며 병렬로 처리할수 있는 허용 스레드 수보다 낮아서는 안된다고 이해를 하는데 어느 스레드의 수치값을 이야기하는건지는 모르겠습니다.(같이 이해 하면 좋을것 같은 'poolWaitingTime')


messaging.connectionDefinition

스레드 수는 NWA > JavaSystem Properties > XPI Service: AF Core나 Adapter Engine Status > Additional Data에서 확인이 가능합니다.(서로 내용이 다른경우가 있는것 같음)

  • 어댑터의 채널에서 사용할수 있는 총 스레드 수
  • 메시지의 To-Be Delivered 상태, 정체 등 발생시 해당 어댑터 스레드 수를 늘려 해결하는 경우가 있음



messaging.system.queueParallelism.maxReceivers

이 파라메터 확인은 NWA > JavaSystem Properties > XPI Service: Messageing System에서 볼수 있으며 아래와 같은 특징이 있습니다.

  • 해당 값은 리시버 어댑터 채널에만 영향
  • 수신 시스템의 병렬 호출을 제한하여 동일한 과부하를 방지
  • 어댑터 엔진의 채널에 할당한 스레드 수를 제한
  • 단독채널에서 사용할수 있는 최대 스레드 수
  • 메시지 볼륨,어댑터타입,노드수 등에 따라 값 설정필요
  • 설정은 노드 단위라고 이해함

messaging.connectionDefinition과는 다른 점은 예를들어 JDBC_관련 Queue네임의 Maximum Number of Threads를 20으로 설정 후에 특정 채널이나 인터페이스에서 스레드 수를 제한하고 싶은경우 maxReceivers를 사용합니다.



messaging.system.queueParallelism.perInterface

1916598 - Configure receiver parallelism per Interface in Messaging System 참고

글로벌로 설정된 스레드 관련 설정이 모든 인터페이스나 시스템에 적합하지 않는경우 동시처리 메시지수를 제어하며 maxReceivers를 활성화 할때 해당 값을 수정합니다.(서버 다시 시작필요)


messaging.system.queueParallelism.queueTypes


비동기 메시지에 대해서만 타겟 병렬처리 제한을 하고 싶은경우 Recv, icoasync로 설정하면 되고 그외 동기는 icosync, 전체메시지는 icoall입니다.  

PI Receiver Parallelism

특정 수신자와 인터페이스에 대해 병렬로 처리되는 메시지(스레드) 수를 제한 할수 있다고 합니다.
 
NWA > PI Receiver Parallelism를 클릭하게되면 아래 출력되는 메시지를 볼수 있는데
"Receiver Parallelization is enabled. The Messaging System Property messaging.system.queueParallelism.maxReceivers has value [설정값].
Receiver Parallelization per interface is enabled."

이 메뉴를 사용하기위해선 사전에 maxReceivers와 perInterface 값이 셋팅이 필요하다는것을 알수 있습니다.

 
그외 참고했던 사이트
그리고 전에 PO내 스레드 관련되서 정리한 글이 있는데 현재 이해한 내용과 다른부분이 보이네요.

댓글 없음:

댓글 쓰기

최근글

9월 태안~천안 아이와 3박4일 가족 여행지