Openstack-Swift正在使用 evenlet.green.httplib 进行 BufferedHttpconnections 。
当我为写入操作执行性能基准测试时,我可以观察到即使只有一个副本节点过载,写入吞吐量也会下降。 据我所知,写法定数是3个副本中的2个,因此只重载一个副本不会影响吞吐量。
当我深入挖掘我观察到的内容时,后续请求将被阻止,直到达到之前请求的响应。它主要是因为BufferedHttpConnection在读取上一个响应之前停止发出新请求。
为什么Openstack-swift使用这样的方法?
这是evenlet.green.httplib.HttpConnection的常见行为吗?
这在写仲裁的观点上没有意义,因为它就像等待所有响应而不是法定人数。
任何想法,使用同一个库停止此行为的任何解决方法?
答案 0 :(得分:0)
它不是库的问题,而是由于Openstack Swift配置的限制,其中"工作者" Openstack Swift的所有Account / Container / Object配置中的配置设置为1
使用evenlet.green.httplib.HttpConnection创建新连接时 它没有阻止。
但是,如果请求使用相同的连接,则后续请求将被阻止,直到完全读取响应为止。