2013-08-26 2 views
0

에게는 WebSphere 메시지 브로커 DataFlowEngine 프로세스를 할당하는 데 실패가 비정상적 오류 Failed to allocate memoryWebSphere®의 메시지 브로커 - DataFlowEngine 프로세스 - 메모리

들어오는 XML 메시지가 약 12 ​​메가 때이 문제가 발생하여 종료됩니다.

크기가 10Mb이지만 비슷한 들어오는 XML 메시지가이 문제를 일으키지 않는 것으로 나타났습니다.

이 메시지를 처리 ​​할 때 생성 된 .abend 로그 파일의 예 3 개를 첨부했습니다. 그들은 .....

  1. http://dpaste.com/1356207/
  2. http://dpaste.com/1356208/
  3. http://dpaste.com/1356209/

에서 우리는 지금까지 GB 1로 jvmMaxHeapSize 설정을 시도했지만 그 도움이되지 않았다에서 생성 된 로그입니다/이 값을 설정 한 후 var/adm/log는 다음과 같습니다. http://dpaste.com/1356210/

비정상적으로 발생하기 전에 DataFlowEngine 프로세스의 크기가 상당히 증가합니다 끝장났다. 나는 NMON 유틸리티를 통해 1.2GB의 크기에 도달하는 것을 볼 수있었습니다.

Google에서 찾은 링크를 기반으로 변수 MQSI_FREE_MASTER_PARSERS=1을 설정해 보았지만 도움이되지 않았습니다.

이 문제의 근본 원인을 파악하기 위해 우리가 할 수있는 다른 조치는 무엇입니까?

답변

1

DFE 프로세스가 ESQL 계산 노드에서 트리 복사본의 대상에 대한 구문 요소를 만들기 위해 더 많은 메모리를 할당하려고합니다.

가장 큰 이유는 엄청난 트리를 복사하고 DFE가 메시지 처리를 위해 할당 할 수있는 것보다 많은 메모리가 필요하다는 것입니다.

XML 입력 파일의 크기는 각 요소에 저장된 비트 스트림 외에도 문서를 나타내는 구문 트리 복사본을 저장하는 데 필요한 크기보다 몇 배나 작을 수 있다는 점을 명심해야합니다. 브로커는 부모 및 자식 요소에 대한 포인터를 저장하고 데이터 및 구조 데이터를 입력해야합니다.

또한 이러한 종류의 데이터는 작은 XML 입력 문서조차 제대로 처리하지 않으면 처리하는 데 막대한 양의 메모리가 필요하다는 것을 의미하는 모든 트리 복사본에 대해 저장해야합니다.

나는 당신의 흐름은 다음과 같습니다 섹션의 끝에 실패하고 말을 당신의 이상 종료에서 심사 :

MQInput 노드 -> 컴퓨팅 노드 -> 시도/CatchNode -> 컴퓨팅 노드 -> 컴퓨팅 노드 - > Compute Node

불필요한 트리 복사본의 오른쪽에서 시작하여 모든 계산 노드를 검토합니다. 그것은 ESQL의 반복 구조를 처리 할 때 필요한 스토리지의 양을 줄이기 위해 참조 변수를 사용하는 방법에 대한 힌트를 제공하는 다음과 같은 정보 센터 항목을 검토 할 가치가있다 :

http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/topic/com.ibm.etools.mft.doc/ac67176_.htm http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/topic/com.ibm.etools.mft.doc/bc23802_.htm

+0

감사 데이브. . . 공유 한 링크에서 언급 한 기술을 버전 6에 적용 할 수 있습니다.Websphere Message Broker는 0입니까? – Guddu

+0

예 이러한 기술은 모든 버전의 Broker와 관련됩니다. – Dave

관련 문제