2015-06-26 5 views
0

Я разработал поток, который собирает сообщение из MQInput, вставляет его в БД, вызывая хранимую процедуру и затем выгружая сообщение в другую очередь. Сообщение находится в XMLNSC.Не удалось отправить сообщение в очередь резервного копирования Message broker

Поток находился в рабочем состоянии в течение 2 месяцев, но теперь я получаю исключения из странных проблем.

3 дня назад я получил такого рода исключение:

(0x01000000:Name):RecoverableException = (
     (0x03000000:NameValue):File     = '/build/slot1/S900_P/src/DataFlowEngine/MessageServices/ImbDataFlowNode.cpp' (CHARACTER) 
     (0x03000000:NameValue):Line     = 1153 (INTEGER) 
     (0x03000000:NameValue):Function    = 'ImbDataFlowNode::createExceptionList' (CHARACTER) 
     (0x03000000:NameValue):Type     = 'ComIbmComputeNode' (CHARACTER) 
     (0x03000000:NameValue):Name     = 'SiebelBOQManagement#FCMComposite_1_2' (CHARACTER) 
     (0x03000000:NameValue):Label    = 'SiebelBOQManagement.Compute' (CHARACTER) 
     (0x03000000:NameValue):Catalog    = 'BIPmsgs' (CHARACTER) 
     (0x03000000:NameValue):Severity    = 3 (INTEGER) 
     (0x03000000:NameValue):Number    = 2230 (INTEGER) 
     (0x03000000:NameValue):Text     = 'Node throwing exception' (CHARACTER) 
     (0x01000000:Name ):Insert    = (
      (0x03000000:NameValue):Type = 14 (INTEGER) 
      (0x03000000:NameValue):Text = 'SiebelBOQManagement.Compute' (CHARACTER) 
     ) 
     (0x01000000:Name ):RecoverableException = (
      (0x03000000:NameValue):File     = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp' (CHARACTER) 
      (0x03000000:NameValue):Line     = 666 (INTEGER) 
      (0x03000000:NameValue):Function    = 'SqlStatementGroup::execute' (CHARACTER) 
      (0x03000000:NameValue):Type     = 'ImbESQLManager' (CHARACTER) 
      (0x03000000:NameValue):Name     = 'ImbESQLManager' (CHARACTER) 
      (0x03000000:NameValue):Label    = 'ImbESQLManager' (CHARACTER) 
      (0x03000000:NameValue):Catalog    = 'BIPmsgs' (CHARACTER) 
      (0x03000000:NameValue):Severity    = 3 (INTEGER) 
      (0x03000000:NameValue):Number    = 2488 (INTEGER) 
      (0x03000000:NameValue):Text     = 'Error detected, rethrowing' (CHARACTER) 
      (0x01000000:Name ):Insert    = (
      (0x03000000:NameValue):Type = 5 (INTEGER) 
      (0x03000000:NameValue):Text = '.SiebelBOQManagement_Compute.Main' (CHARACTER) 
     ) 
      (0x01000000:Name ):Insert    = (
      (0x03000000:NameValue):Type = 5 (INTEGER) 
      (0x03000000:NameValue):Text = '20.3' (CHARACTER) 
     ) 
      (0x01000000:Name ):Insert    = (
      (0x03000000:NameValue):Type = 5 (INTEGER) 
      (0x03000000:NameValue):Text = 'LOGDEBUG(CAST(startTime AS CHARACTER) || '|SiebelBOQManagement|Request|' || CAST(ASBITSTREAM(InputRoot.XMLNSC) AS CHARACTER CCSID 1208), 'Siebel');' (CHARACTER) 
     ) 
      (0x01000000:Name ):RecoverableException = (
      (0x03000000:NameValue):File     = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlRoutine.cpp' (CHARACTER) 
      (0x03000000:NameValue):Line     = 1450 (INTEGER) 
      (0x03000000:NameValue):Function    = 'SqlRoutine::invoke' (CHARACTER) 
      (0x03000000:NameValue):Type     = 'ImbESQLManager' (CHARACTER) 
      (0x03000000:NameValue):Name     = 'ImbESQLManager' (CHARACTER) 
      (0x03000000:NameValue):Label    = 'ImbESQLManager' (CHARACTER) 
      (0x03000000:NameValue):Catalog    = 'BIPmsgs' (CHARACTER) 
      (0x03000000:NameValue):Severity    = 3 (INTEGER) 
      (0x03000000:NameValue):Number    = 2934 (INTEGER) 
      (0x03000000:NameValue):Text     = 'Error occured in procedure' (CHARACTER) 
      (0x01000000:Name ):Insert    = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = 'LOGDEBUG' (CHARACTER) 
      ) 
      (0x01000000:Name ):RecoverableException = (
       (0x03000000:NameValue):File     = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlExternalJava.cpp' (CHARACTER) 
       (0x03000000:NameValue):Line     = 1458 (INTEGER) 
       (0x03000000:NameValue):Function    = 'SqlExternalJavaMethod::executeJavaMethod' (CHARACTER) 
       (0x03000000:NameValue):Type     = '' (CHARACTER) 
       (0x03000000:NameValue):Name     = '' (CHARACTER) 
       (0x03000000:NameValue):Label    = '' (CHARACTER) 
       (0x03000000:NameValue):Catalog    = 'BIPmsgs' (CHARACTER) 
       (0x03000000:NameValue):Severity    = 3 (INTEGER) 
       (0x03000000:NameValue):Number    = 2919 (INTEGER) 
       (0x03000000:NameValue):Text     = 'The following error occurred during execution of an Java Method call' (CHARACTER) 
       (0x01000000:Name ):Insert    = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = '.LOGDEBUG' (CHARACTER) 
      ) 
       (0x01000000:Name ):Insert    = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = '1.1' (CHARACTER) 
      ) 
       (0x01000000:Name ):Insert    = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = 'com.ufone.utility.ProvLogger.LogDebug' (CHARACTER) 
      ) 
       (0x01000000:Name ):Insert    = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = ''1435077650205|SiebelBOQManagement|Request|<Message MessageId="1-7XUQQC" IntObjectName="PTCL Order Entry EAI IO" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical">.......</Message> 
) 
      (0x01000000:Name ):RecoverableException = (
      (0x03000000:NameValue):File  = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlExternalJava.cpp' (CHARACTER) 
      (0x03000000:NameValue):Line  = 1339 (INTEGER) 
      (0x03000000:NameValue):Function = 'SqlExternalJavaMethod::executeJavaMethod' (CHARACTER) 
      (0x03000000:NameValue):Type  = '' (CHARACTER) 
      (0x03000000:NameValue):Name  = '' (CHARACTER) 
      (0x03000000:NameValue):Label = '' (CHARACTER) 
      (0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER) 
      (0x03000000:NameValue):Severity = 3 (INTEGER) 
      (0x03000000:NameValue):Number = 2917 (INTEGER) 
      (0x03000000:NameValue):Text  = 'Java Exception calling CallStaticVoidMethodA.' (CHARACTER) 
      (0x01000000:Name ):Insert = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = 'com.ufone.utility.ProvLogger.LogDebug' (CHARACTER) 
      ) 
      (0x01000000:Name ):Insert = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = 'java.lang.OutOfMemoryError: Java heap space' (CHARACTER) 
      ) 
      (0x01000000:Name ):Insert = (
       (0x03000000:NameValue):Type = 5 (INTEGER) 
       (0x03000000:NameValue):Text = '' (CHARACTER) 
      ) 
     ) 
     ) 
    ) 

Когда я получил эту ошибку, я знал, что память заполнена, и я остановил поток. Через день я не смог найти какую-либо конкретную проблему в коде и снова начал поток.

Имейте в виду, что XML, который я регистрирую, имеет длину 6000 строк.

Вчера я получил исключения в моем следа, как:

(0x01000000:Name):RecoverableException = (
(0x03000000:NameValue):File  = '/build/slot1/S900_P/src/DataFlowEngine/MQLibrary/linklib/ImbMqInputNode.cpp' (CHARACTER) 
(0x03000000:NameValue):Line  = 2528 (INTEGER) 
(0x03000000:NameValue):Function = 'ImbCommonInputNode::eligibleForBackout' (CHARACTER) 
(0x03000000:NameValue):Type  = 'ComIbmMQInputNode' (CHARACTER) 
(0x03000000:NameValue):Name  = 'SiebelBOQManagement#FCMComposite_1_6' (CHARACTER) 
(0x03000000:NameValue):Label = 'SiebelBOQManagement.MQ Input' (CHARACTER) 
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER) 
(0x03000000:NameValue):Severity = 3 (INTEGER) 
(0x03000000:NameValue):Number = 2613 (INTEGER) 
(0x03000000:NameValue):Text  = 'Failed to put message to the back out queue' (CHARACTER) 
(0x01000000:Name ):Insert = (
    (0x03000000:NameValue):Type = 5 (INTEGER) 
    (0x03000000:NameValue):Text = 'SYSTEM.DEAD.LETTER.QUEUE' (CHARACTER) 
) 
(0x01000000:Name ):Insert = (
    (0x03000000:NameValue):Type = 2 (INTEGER) 
    (0x03000000:NameValue):Text = '2' (CHARACTER) 
) 
(0x01000000:Name ):Insert = (
    (0x03000000:NameValue):Type = 2 (INTEGER) 
    (0x03000000:NameValue):Text = '2056' (CHARACTER) 
) 

) )

Я не могу найти причину. Что касается месяца, то процедура отладки работала нормально, и он написал весь XML в журналах, и теперь поток дает мне ненормальное поведение. Также BOQ настроены как для входных, так и для выходных очередей.

+0

2056 MQRC_Q_SPACE_NOT_AVAILABLE. Проверьте, заполнена ли файловая система qmgr. Обычно его/var/mqm, если вы не изменили его. – Umapathy

+0

Спасибо, мой код создавал файлы ядра, поэтому мне пришлось увеличить размер кучи java, чтобы он нормально работал. – user3081780

ответ

0

Из приведенной выше ошибки есть две возможности, которые вызвали эту ошибку.

  1. QMGR файловая система может быть заполнена. Проверьте файловую систему/var/mqm. Если вы не найдете никаких проблем с этой файловой системой, обратитесь к второму пункту
  2. Размер файла вашей очереди может быть больше размера лимита пользовательского файла. Проверьте размер файла с помощью ulimit -f. И сравните его с размером файла очереди. Я подозреваю, что это может вызвать у вас проблему. Если это так, вы всегда можете увеличить свою файловую систему для больших очередей, используя «ulimit -f 4194302», который составляет 2 ГБ.