]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Enable multi-process for API service
authorZhiteng Huang <zhithuang@ebaysf.com>
Wed, 8 Jan 2014 06:50:29 +0000 (14:50 +0800)
committerZhiteng Huang <zhithuang@ebaysf.com>
Thu, 23 Jan 2014 16:28:55 +0000 (00:28 +0800)
commit4576ca73eae6e2ec554b4e6785b9fd7ef310ac91
treec9e34759b0d4c2f6f5dbd6af87d8a0ed5cbd72b3
parentd540eb6f7cac1bb7e705e377c4100a5f1f5f5d8e
Enable multi-process for API service

Due to the limit of Python interpreter, API service of Cinder can't
really utilize underlying multi-core architecture even libraries
like eventlet has been used. To make API service much more scalable,
we'd adopt multi-process (worker) mode that has been used for long
in Glance/Swift/Nova.

The default behavior isn't changed with this patch, Cinder API
service will still run in one process (default value of
osapi_volume_workers is None).

Implementation wise, a good portion of cinder/service.py has been
removed because those content has been merged in Oslo version of
service module.  cinder/wsgi.py is also updated to adopt the change
for multiple WSGI servers running in separate processes.

Implement bp: multi-process-api-service

DocImpact: 'New config option osapi_volume_workers is used to specify
number of API service workers (OS processes) to launch for Cinder
API service.  Setting this config option to a proper value (e.g.
osapi_volume_workers = # of CPU cores/threads of the machine) can
greatly improve the total throughput of API service [# of API
requests can be handled per second].'

Also removed out-dated comments in bin/cinder-api due to the fact
that this bug [1] has been fixed in eventlet 0.9.13

[1] https://bitbucket.org/eventlet/eventlet/issue/92/eventletgreen-override-of-oswaitpid

Change-Id: I8361d0dc0d43040e48634ff1aee1324e5e0af466
bin/cinder-all
bin/cinder-api
bin/cinder-backup
bin/cinder-volume
cinder/service.py
cinder/tests/test_service.py
cinder/wsgi.py
etc/cinder/cinder.conf.sample