John created TS-3662:
------------------------

             Summary: Caching range requests plugin.
                 Key: TS-3662
                 URL: https://issues.apache.org/jira/browse/TS-3662
             Project: Traffic Server
          Issue Type: Bug
          Components: Plugins
            Reporter: John


We are using ATS to cache very large binary files 60gb + for a customer.  The 
customers user client software is used to fetch these files using HTTP range 
requests in a predictable manner ie, all clients request the same byte ranges.  
In any event, if we were to cache the large 60gb file obtained from the origin, 
the ATS would save it to a single stripe or disk drive using the background 
fetch plugin.  When we tried this method, we discovered that the thousands of 
range requests to a single disk drive caused a significant performance issue, 
high I/O wait and load average on the host running ATS.

The plugin I have written, see the attached patch, transforms the range 
requests at various points in the HTTP flow so that the ATS may cache the range 
requests as individual objects by modifying the the request URL, removing and 
restoring the range request headers where appropriate.  This allows the 
individual range requests to be stored and retrieved as individual objects that 
are spread over multiple disk drives.  See the source as it is well commented.

We have this plugin in production within our CDN and have seen a dramatic 
improvement for delivery of our customers files using range requests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to