[openstack-dev] Keystone handling http requests synchronously

Jay Pipes jaypipes at gmail.com
Fri Mar 22 17:45:39 UTC 2013


Unfortunately, Keystone's WSGI server is only a single process, with a
greenthread pool. Unlike Glance, Nova, Cinder, and Swift, which all use
multi-process, greenthread-pool-per-process WSGI servers[1], Keystone
does it differently[2].

There was a patchset[3] that added multiprocess support to Keystone, but
due to objections from termie and others about it not being necessary,
it died on the vine. Termie even noted that Keystone "was designed to be
run as multiple instances and load balanced over and [he felt] that
should be the preferred scaling point".

Because the mysql client connection is C-based, calls to it will be
blocking operations on greenthreads within a single process, meaning
even if multiple greenthreads are spawned for those 200 incoming
requests, they will be processed synchronously.

The solution is for Keystone to implement the same multi-processed WSGI
worker stuff that is in the other OpenStack projects. Or, diverge from
the deployment solution of Nova, Glance, Cinder, and Swift, and manually
run multiple instances of keystone, as Termie suggests.

Best,
-jay

[1] All pretty much derived from the original Swift code, with some Oslo
improvements around config
[2] Compare
https://github.com/openstack/glance/blob/master/glance/common/wsgi.py
with
https://github.com/openstack/keystone/blob/master/keystone/common/wsgi.py
[3] https://review.openstack.org/#/c/7017/

On 03/21/2013 07:45 AM, Kanade, Rohan wrote:
> Hi,
> 
> I was trying to create 200 users using the keystone client. All the
> users are unique and are created on separate threads which are started
> at the same time. 
> 
> keystone is handling each request synchronously , i.e. user 1 is
> created, then user 2 is created ...
> 
> Shouldnt  keystone be running  a greenthread for each request and try to
> create these users asynchronously? 
> like start creating user 1 , while handling that request, start creating
> user 2 or user n... 
> 
> I have attached the keystone service logs for further assistance.
> http://paste.openstack.org/show/34216/
> 
> ______________________________________________________________________
> Disclaimer:This email and any attachments are sent in strictest
> confidence for the sole use of the addressee and may contain legally
> privileged, confidential, and proprietary data. If you are not the
> intended recipient, please advise the sender by replying promptly to
> this email and then delete and destroy this email and any attachments
> without any further use, copying or forwarding
> 
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 



More information about the OpenStack-dev mailing list