为什么openletack Swift请求被eventlet.green.httplib阻止?

时间:2015-03-12 11:20:26

标签: python python-2.7 openstack openstack-swift

Openstack-Swift正在使用 evenlet.green.httplib 进行 BufferedHttpconnections

当我为写入操作执行性能基准测试时,我可以观察到即使只有一个副本节点过载,写入吞吐量也会下降。 据我所知,写法定数是3个副本中的2个,因此只重载一个副本不会影响吞吐量。

当我深入挖掘我观察到的内容时,后续请求将被阻止,直到达到之前请求的响应。它主要是因为BufferedHttpConnection在读取上一个响应之前停止发出新请求。

为什么Openstack-swift使用这样的方法?

这是evenlet.green.httplib.HttpConnection的常见行为吗?

这在写仲裁的观点上没有意义,因为它就像等待所有响应而不是法定人数。

任何想法,使用同一个库停止此行为的任何解决方法?

1 个答案:

答案 0 :(得分:0)

它不是库的问题,而是由于Openstack Swift配置的限制,其中"工作者" Openstack Swift的所有Account / Container / Object配置中的配置设置为1

关于图书馆

使用evenlet.green.httplib.HttpConnection创建新连接时 它没有阻止。

但是,如果请求使用相同的连接,则后续请求将被阻止,直到完全读取响应为止。