Ask Your Question
0

Max Concurrent Requests

asked 2011-06-13 16:54:21 -0500

lardcanoe gravatar image

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 (http://swift.openstack.org/deployment...) and http://docs.openstack.org/cactus/openstack-object-storage/admin/content/general-service-tuning.html (http://docs.openstack.org/cactus/open...)

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...

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted
0

answered 2011-06-14 23:35:01 -0500

lardcanoe gravatar image

Thanks gholt, that solved my question.

edit flag offensive delete link more
0

answered 2011-06-13 23:07:25 -0500

gholt gravatar image

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.)

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Get to know Ask OpenStack

Resources for moderators

Question Tools

1 follower

Stats

Asked: 2011-06-13 16:54:21 -0500

Seen: 210 times

Last updated: Jun 14 '11