ICEfaces
  1. ICEfaces
  2. ICE-2812

Modify default connection settings values to improve connection robustness

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.6
    • Fix Version/s: 1.7RC1, 1.7
    • Component/s: Bridge
    • Labels:
      None
    • Environment:
      ICEfaces async applications only
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial, Compatibility/Configuration

      Description

      We need to change the default connection settings values for async connections to:

      1. Improve conn. robustness / reduce occurrences of Connection Lost messages
      2. Reduce heartbeat frequency / communications traffic

      To meet these goals, the following changes are recommended:

      1. Increase the default ping timeout value from the current 3 secs. to 30 seconds. This gives a much longer time for the ping to respond successfully in higher latency situations and is a more conservative approach for the default scenario.

      // 30 sec. ping timeout
      <context-param>
      <param-name>com.icesoft.faces.heartbeatTimeout</param-name>
      <param-value>30000</param-value>
      </context-param>

      2. Increase the async connection heartbeat interval time from the current 20 seconds to 50 seconds. This will increase the interval to just under the 'magic' 60 secs. / 1 min. mark, which is where certain communications services and devices may start to kill idle connections. Overall effect is to reduce the frequency of pings being sent.

      // 50 sec. heartbeat interval
      <context-param>
      <param-name>com.icesoft.faces.heartbeatInterval</param-name>
      <param-value>50000</param-value>
      </context-param>

      Note that the heartbeet retries value will remain at the current setting, which is 3.

      Also note that a new connection setting has been added in 1.7. 'blockingConnectionTimeout' specifies how long the async blocking connection should be held open before being released for a new blocking connection. In effect, this specifies how long an idle blocking connection should be held. The blocking connection is closed and re-opened with every comm. interaction, such as user interaction or a heartbeat ping. The purpose of this setting is to remove the possibility of threads being held blocked for a long duration on a "dead" / completely inactive client connection. Its default value should be 90 secs.. In general this value should be larger than the heartbeat interval to avoid unnecessary traffic (unblocking and blocking without any updates available). The 90 sec. value provides more than enough time for the default heartbeat interval to occur and time-out (50 secs + 30 secs.) before the blocking connection is released.

        Activity

        Ken Fyten created issue -
        Hide
        Ken Fyten added a comment -

        Note that these settings have been tested successfully with FF2, IE6 and IE7.

        We'll need to update the Dev. Guide Connection Settings section with the updated defaults and new parameter.

        Also, all sample apps. etc. that specify values should be updated to reflect the new defaults.

        Show
        Ken Fyten added a comment - Note that these settings have been tested successfully with FF2, IE6 and IE7. We'll need to update the Dev. Guide Connection Settings section with the updated defaults and new parameter. Also, all sample apps. etc. that specify values should be updated to reflect the new defaults.
        Ken Fyten made changes -
        Field Original Value New Value
        Fix Version/s 1.7 [ 10080 ]
        Affects [Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial, Compatibility/Configuration]
        Assignee Priority P1
        Assignee Mircea Toma [ mircea.toma ]
        Priority Major [ 3 ] Minor [ 4 ]
        Ken Fyten made changes -
        Description We need to change the default connection settings values for async connections to:

        1. Improve conn. robustness / reduce occurrences of Connection Lost messages
        2. Reduce heartbeat frequency / communications traffic

        To meet these goals, the following changes are recommended:

        1. Increase the default ping timeout value form the current 3 secs. to 30 seconds. This gives a much longer time for the ping to respond successfully in higher latency situations and is a more conservative approach for the default scenario.

        // 50 sec. heartbeat interval
        <context-param>
        <param-name>com.icesoft.faces.heartbeatInterval</param-name>
        <param-value>50000</param-value>
        </context-param>


        2. Increase the async connection heartbeat interval time from the current 20 seconds to 50 seconds. This will increase the interval to just under the 'magic' 60 secs. / 1 min. mark, which is where certain communications services and devices may start to kill idle connections. Overall effect is to reduce the frequency of pings being sent.

        // 30 sec. ping timeout
        <context-param>
        <param-name>com.icesoft.faces.heartbeatTimeout</param-name>
        <param-value>30000</param-value>
        </context-param>


        Note that the heartbeet retries value will remain at the current setting, which is 3.

        Also note that a new connection setting has been added in 1.7. 'blockingConnectionTimeout' specifies how long the async blocking connection should be held open before being released for a new blocking connection. In effect, this specifies how long an idle blocking connection should be held. The blocking connection is closed and re-opened with every comm. interaction, such as user interaction or a heartbeat ping. The purpose of this setting is to remove the possibility of threads being held blocked for a long duration on a "dead" / completely inactive client connection. Its default value should be 90 secs.. In general this value should be larger than the heartbeat interval to avoid unnecessary traffic (unblocking and blocking without any updates available). The 90 sec. value provides more than enough time for the default heartbeat interval to occur and time-out (50 secs + 30 secs.) before the blocking connection is released.
        We need to change the default connection settings values for async connections to:

        1. Improve conn. robustness / reduce occurrences of Connection Lost messages
        2. Reduce heartbeat frequency / communications traffic

        To meet these goals, the following changes are recommended:

        1. Increase the default ping timeout value from the current 3 secs. to 30 seconds. This gives a much longer time for the ping to respond successfully in higher latency situations and is a more conservative approach for the default scenario.

        // 30 sec. ping timeout
        <context-param>
        <param-name>com.icesoft.faces.heartbeatTimeout</param-name>
        <param-value>30000</param-value>
        </context-param>

        2. Increase the async connection heartbeat interval time from the current 20 seconds to 50 seconds. This will increase the interval to just under the 'magic' 60 secs. / 1 min. mark, which is where certain communications services and devices may start to kill idle connections. Overall effect is to reduce the frequency of pings being sent.

        // 50 sec. heartbeat interval
        <context-param>
        <param-name>com.icesoft.faces.heartbeatInterval</param-name>
        <param-value>50000</param-value>
        </context-param>

        Note that the heartbeet retries value will remain at the current setting, which is 3.

        Also note that a new connection setting has been added in 1.7. 'blockingConnectionTimeout' specifies how long the async blocking connection should be held open before being released for a new blocking connection. In effect, this specifies how long an idle blocking connection should be held. The blocking connection is closed and re-opened with every comm. interaction, such as user interaction or a heartbeat ping. The purpose of this setting is to remove the possibility of threads being held blocked for a long duration on a "dead" / completely inactive client connection. Its default value should be 90 secs.. In general this value should be larger than the heartbeat interval to avoid unnecessary traffic (unblocking and blocking without any updates available). The 90 sec. value provides more than enough time for the default heartbeat interval to occur and time-out (50 secs + 30 secs.) before the blocking connection is released.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #15918 Tue Mar 04 10:46:33 MST 2008 mircea.toma Modify default values.
        ICE-2812
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/core/SendUpdatedViews.java
        Commit graph MODIFY /icefaces/trunk/icefaces/bridge/src/connection.async.js
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/context/DOMResponseWriter.java
        Hide
        Mircea Toma added a comment -

        Modified default values.

        Show
        Mircea Toma added a comment - Modified default values.
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #15996 Tue Mar 11 12:01:52 MDT 2008 mircea.toma Set default value for connectionTimeout to 60 seconds.
        ICE-2812
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/bridge/src/connection.async.js
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/context/DOMResponseWriter.java
        Commit graph MODIFY /icefaces/trunk/icefaces/bridge/src/connection.js
        Ken Fyten made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Ken Fyten made changes -
        Summary Modify default async. connection settings to improve connection robustness Modify default connection settings values to improve connection robustness
        Hide
        Mircea Toma added a comment -

        Set default value for connectionTimeout to 60 seconds.

        Show
        Mircea Toma added a comment - Set default value for connectionTimeout to 60 seconds.
        Mircea Toma made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Ken Fyten made changes -
        Comment [ We should also increase the default value for connectionTimeout from 30 secs to 60 secs (60000). ]
        Ken Fyten made changes -
        Comment [ We should also increase the default value for connectionTimeout from 30 secs to 90 secs (90000), which brings it into alignment with the blockingConnectionTimeout default value. ]
        Ken Fyten made changes -
        Fix Version/s 1.7RC1 [ 10123 ]
        Fix Version/s 1.7 [ 10080 ]
        Ken Fyten made changes -
        Fix Version/s 1.7 [ 10080 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Assignee Priority P1
        Assignee Mircea Toma [ mircea.toma ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Ken Fyten
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: