0

Openstack-Swift is using evenlet.green.httplib for BufferedHttpconnections.

When I do performance benchmark of it for write operations, I could observer that write throughput drops even only one replica node is overloaded. As I know write quorum is 2 out of 3 replicas, therefore overloading only one replica cannot affect for the throughput.

When I dig deeper what I observed was, the consequent requests are blocked until the responses are reached for the previous requests. Its mainly because of the BufferedHttpConnection which stops issuing new request until the previous response is read.

Why Openstack-swift use such a method?

Is this the usual behaviour of evenlet.green.httplib.HttpConnection?

This does not make sense in write quorum point of view, because its like waiting for all the responses not a quorum.

Any ideas, any workaround to stop this behaviour using the same library?

Anayag
  • 145
  • 1
  • 10
  • *"Why Openstack-swift use such a method?"* - Ask the authors. Or better yet ... since you are a smart person ... figure out a better way to do it, code it, test it, benchmark it and submit patches. – Stephen C Mar 12 '15 at 11:24
  • Thanks Stephen. Your reply showed what I should ask properly. So I changed the question. Once figured out the correct way will do as you said. – Anayag Mar 12 '15 at 12:32

1 Answers1

0

Its not a problem of the library but a limitation due to the Openstack Swift configuration where the "Workers" configuration in all Account/Container/Object config of Openstack Swift was set to 1

Regarding the library

When new connections are made using evenlet.green.httplib.HttpConnection it does not block.

But if requests are using the same connection, subsequent requests are blocked until the response is fully read.

Anayag
  • 145
  • 1
  • 10