Max Concurrent Requests

Asked by Steve

How can I determine the maximum concurrent requests each proxy server can handle? I see the "workers" config, but I didn't see anything about what each worker is actually doing. So if I expect to have 5000 requests per second, I need X proxy servers. And each proxy server would have Y cores, and Z workers. Etc...

http://swift.openstack.org/deployment_guide.html
and
http://docs.openstack.org/cactus/openstack-object-storage/admin/content/general-service-tuning.html

Most of my experience is from setting up Apache, where you actually have to spend a good amount of time tweaking your config for these numbers...

Question information

Language:
English Edit question
Status:
Solved
For:
OpenStack Object Storage (swift) Edit question
Assignee:
No assignee Edit question
Solved by:
gholt
Solved:
Last query:
Last reply:
Revision history for this message
Best gholt (gholt) said :
#1

Well, Swift is a lot newer than Apache, so these things are still up for testing and definitely depend on hardware characteristics.

Because of the way Python works, it can only use one CPU core per process. Each worker is a process. So, if you have 8 cores, a minimum of 8 workers should be defined. However, if you have a lot of disks on separate i/o channels, you may benefit by having even more workers (one uses the core while another is blocked on i/o).

Each worker uses coroutines to handle a lot more than just one connection. Just how many connections per worker depends on the speed of the CPU cores and the network hardware. Testing is the only way right now to figure out what can be handled.

We fire up several client servers using things like swift-bench to test concurrency and watch the load on the proxies and other servers. We also generate traffic resembling what we see on our production cluster (average/min/max object size, GETs to PUTs to HEADs, etc.) and watch the load across the cluster. Finally, we're also always watching the production clusters to make sure the load is what we anticipated and add capacity where we see the need (such as our upcoming move to separate account/container servers from the object servers.)

Revision history for this message
Steve (lardcanoe) said :
#2

Thanks gholt, that solved my question.