blob: ca0a0025972fa09b60d013735485ad8e5d750a32 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
// collapsed_forwarding::
//
// ATS plugin to allow collapsed forwarding of concurrent requests for the same
// object. This plugin is based on open_write_fail_action feature, which detects
// cache open write failure on a cache miss and returns a 502 error along with a
// special @-header indicating the reason for 502 error. The plugin acts on the
// error by using an internal redirect follow back to itself, essentially blocking
// the request until a response arrives, at which point, relies on read-while-writer
// feature to start downloading the object to all waiting clients. The following
// config parameters are assumed to be set for this plugin to work:
////////////////////////////////////////////////////////////////////////////////////
// proxy.config.http.cache.open_write_fail_action 1 /////////////////////////
// proxy.config.cache.enable_read_while_writer 1 /////////////////////////
// proxy.config.http.number_of_redirections 10 /////////////////////////
// proxy.config.http.redirect_use_orig_cache_key 1 /////////////////////////
// proxy.config.http.background_fill_active_timeout 0 /////////////////////////
// proxy.config.http.background_fill_completed_threshold 0 /////////////////////////
////////////////////////////////////////////////////////////////////////////////////
// Additionally, given that collapsed forwarding works based on cache write
// lock failure detection, the plugin requires cache to be enabled and ready.
// On a restart, Traffic Server typically takes a few seconds to initialize
// the cache depending on the cache size and number of dirents. While the
// cache is not ready yet, collapsed forwarding can not detect the write lock
// contention and so can not work. The setting proxy.config.http.wait_for_cache
// may be enabled which allows blocking incoming connections from being
// accepted until cache is ready.
More details are available at
https://docs.trafficserver.apache.org/en/latest/admin-guide/configuration/cache-basics.en.html#reducing-origin-server-requests-avoiding-the-thundering-herd
Configuration:
Add @plugin=collapsed_forwarding.so to your remap.config rules. The plugin optionally
accepts a --delay=<delay> parameter and a --retries=<retries> parameter that can help tune
the total number of retries and the delay between consecutive retries.