2015-06-26 39 views
0

我开发了一个从MQInput获取消息的流,通过调用存储过程将其插入到数据库中,然后将消息转储到另一个队列。该消息位于XMLNSC中。无法将消息放入退出队列消息代理

流程处于运行状态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检查您的文件限制大小。并且,将它与您的队列文件大小进行比较。我怀疑这可能会导致你的问题。如果是这样,你可以使用2GB的'ulimit -f 4194302'来增加文件系统的容量。