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



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

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

当我深入挖掘我观察到的情况时,随后的请求将被阻止,直到达到对先前请求的响应。这主要是因为BufferedHttpConnection停止发出新请求,直到读取上一个响应。

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

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

这在写入仲裁的角度来看是没有意义的,因为它就像等待所有响应而不是仲裁。

任何

想法,任何解决方法来使用相同的库来阻止这种行为?

这不是库的问题,而是由于Openstack Swift配置的限制,其中Openstack Swift的所有帐户/容器/对象配置中的"Workers"配置都设置为1

关于图书馆

当使用evenlet.green.httplib.HttpConnection建立新连接时它不会阻止。

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

最新更新