系统环境:LINUX + jboss4.0.0 + 应用程序整体架构:程序之间采用JMS方式数据通信
应用程序业务需求:数据采集---->入消息队列 -------->出队列-------->短信发送应用程序A: 数据采集------>入消息队列A程序运行异常报错如下:
[WARN ] 2011-04-27 00:01:30 method:org.jboss.mq.Connection.asynchFailure(Connection.java:459)Connection failure: 
org.jboss.mq.SpyJMSException: Connection Failed; - nested throwable: (java.io.IOException: ping timeout.)
at org.jboss.mq.Connection.asynchFailure(Connection.java:436)
at org.jboss.mq.Connection$PingTask.run(Connection.java:1385)
at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.IOException: ping timeout.

at org.jboss.mq.Connection$PingTask.run(Connection.java:1377)
... 2 more每个一分钟 报错程序影响:数据无法入消息队列A ,出队列程序未抽取到数据。该从哪些方面调查原因,希望高手帮忙解决,

解决方案 »

  1.   

    是JMX连接的心跳检测出现异常。JMS是什么软件实现的?检查一下心跳检测的时间设置,就是连接 TTL的参数。 这个参数的意义是当客户端的一个连接没有任何数到达服务器时,服务器充许这个连接有效的最长时间。客户端通过定 时向服务器端发送“ping“数据包来维持连接的有效,以免被服务器关掉。如果服务器在TTL指定的时间内没有收到任何 数据包,则认为该连接无效,继而关闭与该连接相关的所有的会话(session)另外,检查你客户端的ping发送间隔设置,一定要比较服务器设置的小。
      

  2.   

    JMS 就是标准的JMS,用JBOSS 做消息队列。服务器运行这个链接有效的最长时间指得是?系统设定的?linux 对这个设定吗?
      

  3.   


    <?xml version="1.0" encoding="UTF-8"?><!-- $Id: uil2-service.xml,v 1.5 2004/09/08 11:00:26 ejort Exp $ --><server>  <!-- JBossMQ using the Unified Invocation Layer
           All communication uses one socket connection -->  <mbean code="org.jboss.mq.il.uil2.UILServerILService"
     name="jboss.mq:service=InvocationLayer,type=UIL2">    <!-- The server chain -->
        <depends optional-attribute-name="Invoker">jboss.mq:service=Invoker</depends>
        <!-- JNDI binding -->
        <attribute name="ConnectionFactoryJNDIRef">ConnectionFactory</attribute>
        <!-- JNDI binding for XA -->
        <attribute name="XAConnectionFactoryJNDIRef">XAConnectionFactory</attribute>
        <!-- The bind address -->
        <attribute name="BindAddress">${jboss.bind.address}</attribute>
        <!-- The bind port -->
        <attribute name="ServerBindPort">8093</attribute>
        <!-- The ping period in millis -->
        <attribute name="PingPeriod">60000</attribute>
        <!-- Whether tcp/ip does not wait for buffer fills -->
        <attribute name="EnableTcpNoDelay">true</attribute>
        <!-- Used to disconnect the client if there is no activity -->
        <!-- Ensure this is greater than the ping period -->
        <attribute name="ReadTimeout">120000</attribute>
        <!-- The size of the buffer (in bytes) wrapping the socket -->
        <!-- The buffer is flushed after each request -->
        <attribute name="BufferSize">2048</attribute>
        <!-- Large messages may block the ping/pong -->
        <!-- A pong is simulated after each chunk (in bytes) for both reading and writing -->
        <!-- It must be larger than the buffer size -->
        <attribute name="ChunkSize">1000000</attribute>
      </mbean>  <!-- Aliases UIL -> UIL2 for backwards compatibility 
           the deprecated UIL deployment can be found in docs/examples/jca -->
       <mbean code="org.jboss.naming.NamingAlias" name="jboss.mq:service=InvocationLayer,type=UIL">
          <attribute name="FromName">UILConnectionFactory</attribute>
          <attribute name="ToName">ConnectionFactory</attribute>
       </mbean>
       <mbean code="org.jboss.naming.NamingAlias" name="jboss.mq:service=InvocationLayer,type=UILXA">
          <attribute name="FromName">UILXAConnectionFactory</attribute>
          <attribute name="ToName">XAConnectionFactory</attribute>
       </mbean>
       <mbean code="org.jboss.naming.NamingAlias"
          name="jboss.mq:service=InvocationLayer,type=UIL2,alias=UIL2ConnectionFactory">
          <attribute name="FromName">UIL2ConnectionFactory</attribute>
          <attribute name="ToName">ConnectionFactory</attribute>
       </mbean>
       <mbean code="org.jboss.naming.NamingAlias"
          name="jboss.mq:service=InvocationLayer,type=UIL2XA,alias=UIL2XAConnectionFactory">
          <attribute name="FromName">UIL2XAConnectionFactory</attribute>
          <attribute name="ToName">XAConnectionFactory</attribute>
       </mbean>
    </server>
    <attribute name="PingPeriod">60000</attribute>
    这个部分设置了 客户端,还是服务器端?