Bug 911446

Summary: Internally or externally generated HEAD requests on accounts and containers can cause severe performance problems with Gluster/Swift responsive and impact volume stability
Product: [Community] Gluster-Swift Reporter: Peter Portante <pportant>
Component: object-serverAssignee: Michael Adam <madam>
Status: ASSIGNED --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 1.8.0CC: bugs, madam, sankarshan
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On:    
Bug Blocks: 903396, 978061    

Description Peter Portante 2013-02-14 21:57:08 EST
Every PUT, GET or DELETE operation on an object (the most frequent set of REST API operations) requires the proxy server to check for the existence of the account and container to validate the request.

The proxy server uses HEAD requests on the account and another HEAD request on the container to check their existence, caching the positive or negative result of those requests for "recheck_account_existence" or "recheck_container_existence" proxy server configured number of seconds.

When the number of containers in an account grows sufficiently large, or likewise the number of objects in a container, these HEAD requests result in expense directory listing operations involving multiple stat() system calls per file/directory.
Comment 1 Luis Pabón 2013-08-02 10:45:12 EDT
This is currently being 'solved' by not walking the file system tree.  The behavior can be modified in /etc/swift/fs.conf