Bug 1411391

Summary: Swift Proxy Workers defaults to a single worker
Product: Red Hat OpenStack Reporter: Alex Krzos <akrzos>
Component: openstack-tripleo-heat-templatesAssignee: Jiri Stransky <jstransk>
Status: CLOSED CURRENTRELEASE QA Contact: Arik Chernetsky <achernet>
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: aschultz, cschwede, dbecker, mburns, morazi, pgrist, rhel-osp-director-maint
Target Milestone: Upstream M3Keywords: Triaged, ZStream
Target Release: 11.0 (Ocata)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-06-22 07:31:48 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Alex Krzos 2017-01-09 15:39:57 UTC
Description of problem:
OpenStack Swift Proxy Server Daemon (swift-proxy-server) should be configured with more than one process/worker for performance and scalability.

Version-Release number of selected component (if applicable):
RHOSP10 Newton

How reproducible:
Always with default setup

Steps to Reproduce:
1. Deploy Red Hat OpenStack Platform
2. Review # of Swift proxy-server daemons running
3.

Actual results:
The configured default is a single worker despite the puppet-swift installer (For Newton) showing it should configure more than a single worker (processor count) [0]

Expected results:
At a minimum, more than a single daemon per the Swift General Service Tuning [1]

Additional info:

Currently you can work around this by passing an additional yaml template into the openstack deploy command to expand the number of workers:

parameter_defaults:
  SwiftWorkers: 24

The actual General Service Tuning recommends 2 x physical cpu core count though it mentions further experiments might be necessary if the server shares other services running on it. (Such as our controllers)

Reviewing the configuration for the swift-proxy-server shows it is configured for a single worker by default by being tuned to:
workers = 0

Thus it suggests something is overriding the configuration by the puppet-swift installer.


In actually testing for scalability of Gnocchi processing metrics on instances with a swift storage backend, it has shown that a single swift-proxy worker will peg a single cpu core at 100 instances ( Technically three workers each pegging a cpu core across 3 controllers - ha deployment)

[0] https://github.com/openstack/puppet-swift/blob/stable/newton/manifests/proxy.pp#L28
[1] http://docs.openstack.org/developer/swift/deployment_guide.html#general-service-tuning

Comment 1 Red Hat Bugzilla Rules Engine 2017-02-08 20:35:29 UTC
This bugzilla has been removed from the release and needs to be reviewed and Triaged for another Target Release.

Comment 2 Christian Schwede (cschwede) 2017-03-10 14:06:04 UTC
Fix merged upstream, setting this to POST.