11 Replies Latest reply on Jul 13, 2010 1:30 AM by jbmuser

    Frequency of ping packets

    jbmuser

      Hi All,

       

      HornetQ server and client send a heart beat ping packets to each other periodically so that they can detect a connection failure when these packets are not received for connection-ttl and client-failure-check-period respectively. What is the frequency of these ping packets?

      I am asking this because, when I set conenction-ttl to 30 seconds, server closes the live client connection saying "Did not receive ping from.....".  So, I want to make sure I am not setting connection-ttl or client-failure-check-period less than the frequency of the ping messages

       

      Bijith

        • 1. Re: Frequency of ping packets
          ataylor

          30 or 30000, i think its in milliseconds!

          • 2. Re: Frequency of ping packets
            jbmuser

            Ofcourse It was set to 30000 in config file.

            • 3. Re: Frequency of ping packets
              ataylor

              how long before the clients are timed out and can u post your config

              • 4. Re: Frequency of ping packets
                jbmuser

                Client doesn't time out in my case. It is the server that closes client connection saying "didn't receive ping..."

                 

                My hornetq-jms.xml configuration is as given below

                 

                <configuration xmlns="urn:hornetq"
                               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                               xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">

                 

                        <connection-factory name="NettyConnectionFactory">
                           <connectors>
                         <connector-ref connector-name="netty"/>
                           </connectors>
                                <entries>
                                        <entry name="/ConnectionFactory"/>
                                        <entry name="/XAConnectionFactory"/>
                                </entries>
                <block-on-durable-send>true</block-on-durable-send>
                <block-on-acknowledge>true</block-on-acknowledge>
                <connection-ttl>600000</connection-ttl>
                <call-timeout>180000</call-timeout>
                <client-failure-check-period>60000</client-failure-check-period>
                <block-on-non-durable-send>true</block-on-non-durable-send>
                <retry-interval>4000</retry-interval>
                <reconnect-attempts>5</reconnect-attempts>
                <confirmation-window-size>1000000</confirmation-window-size>
                        </connection-factory>

                 

                        <queue name="DLQ">
                                <entry name="/queue/DLQ"/>
                        </queue>
                        <queue name="ExpiryQueue">
                                <entry name="/queue/ExpiryQueue"/>
                        </queue>
                        <queue name="ExampleQueue">
                                <entry name="/queue/ExampleQueue"/>
                        </queue>
                        <topic name="ExampleTopic">
                                <entry name="/topic/ExampleTopic"/>
                        </topic>

                 

                </configuration>

                • 5. Re: Frequency of ping packets
                  jbmuser

                  The config had <connection-ttl>30000</connection-ttl> when I hit the issue.

                  • 6. Re: Frequency of ping packets
                    timfox

                    Bijith Kumar wrote:

                     

                    Hi All,

                     

                    HornetQ server and client send a heart beat ping packets to each other periodically so that they can detect a connection failure when these packets are not received for connection-ttl and client-failure-check-period respectively. What is the frequency of these ping packets?

                    I am asking this because, when I set conenction-ttl to 30 seconds, server closes the live client connection saying "Did not receive ping from.....".  So, I want to make sure I am not setting connection-ttl or client-failure-check-period less than the frequency of the ping messages

                     

                    Bijith

                    http://hornetq.sourceforge.net/docs/hornetq-2.1.1.Final/user-manual/en/html/connection-ttl.html

                     

                    The timeout is defined by connection-ttl

                     

                    The ping frequency is defined by client-failure-check-period

                     

                    If you set them to be the same, then of course, connection will be timed out.

                     

                    connection ttl should normally be much > client-failure-check-period

                    • 7. Re: Frequency of ping packets
                      jbmuser

                      mm.. I am confused. What I understood from document is that

                      1. Every client sends ping packets periodically to server to let server know that client is alive

                      2. Server also sends ping mesages to all its clients periodically to let client know that Server is alive

                      3. If server doesn't receive ping packets from a client within connection-ttl time, server assumes that client is dead and cleans up its resources

                      4. If client doesn't receive ping packets from a server within client-failure-check-period time, client assumes that server is down and initiates automatic failover (if it is enabled) or throws Exception from Conenction so that ExceptionListener if any can handle failover

                      5. "connection ttl should normally be much > client-failure-check-period". This is true because otherwise clients wouldn't get a chance to failover and reconnect when connection to server fails.

                      6. "The ping frequency is defined by client-failure-check-period", I am confused here. The document is silent on this and my understanding of client-failure-check-period is as given in #4 above. i.e. my understanding is that both connection-ttl and client-failure-check-period are timeouts. One is at server side and other at client side. Could you please clarify?

                       

                      Your help is greatly appreciated

                      Bijith

                      • 8. Re: Frequency of ping packets
                        timfox

                        1. Every client sends ping packets periodically to server to let server know that client is alive


                        Yes

                         


                        2. Server also sends ping mesages to all its clients periodically to let client know that Server is alive


                        No. Pings are sent to the client when the server receives a ping.

                         


                        3. If server doesn't receive ping packets from a client within connection-ttl time, server assumes that client is dead and cleans up its resources


                        Yes

                         


                        4. If client doesn't receive ping packets from a server within client-failure-check-period time, client assumes that server is down and initiates automatic failover (if it is enabled) or throws Exception from Conenction so that ExceptionListener if any can handle failover


                        Yes

                         


                        5. "connection ttl should normally be much > client-failure-check-period". This is true because otherwise clients wouldn't get a chance to failover and reconnect when connection to server fails.


                        No, this is so you don't get false connection clean ups. The client must send pings to the server faster than connection-ttl otherwise the server may erroneously think the client is dead.

                         


                        6. "The ping frequency is defined by client-failure-check-period",

                        It defines the client timeout but also defines the client ping frequency.

                        • 9. Re: Frequency of ping packets
                          jbmuser

                          Tim, thank you for the clarification.

                           

                          Btw, if client-failure-check-period defines the client ping frequency as well, then what would be the frequency when client-failure-check-period is set to -1?

                           

                          From document:

                          "The default value for client failure check period is 30000ms,  i.e.             30 seconds. A value of -1 means the  client will never fail the             connection on the client side if no data is received from  the server. Typically this is             much lower than connection TTL to allow clients to reconnect  in case of transitory             failure."

                           

                          Thanks

                          Bijith

                          • 10. Re: Frequency of ping packets
                            timfox

                             

                            Btw, if client-failure-check-period defines the client ping frequency as well, then what would be the frequency when client-failure-check-period is set to -1?


                            That disables pinging

                            • 11. Re: Frequency of ping packets
                              jbmuser

                              Thanks Tim