【问题标题】:Why does Openstack Swift requests are blocked by eventlet.green.httplib?为什么 Openstack Swift 请求会被 eventlet.green.httplib 阻止?
【发布时间】:2015-03-12 11:20:26
【问题描述】:

Openstack-Swift 正在将 evenlet.green.httplib 用于 BufferedHttpconnections

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

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

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

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

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

有什么想法,有什么解决方法可以使用同一个库来阻止这种行为吗?

【问题讨论】:

  • “为什么 Openstack-swift 使用这种方法?” - 问作者。或者更好……因为你是个聪明人……找出更好的方法来做,编码,测试,基准测试并提交补丁。
  • 谢谢斯蒂芬。您的回复显示了我应该正确提出的问题。所以我改变了问题。一旦找到正确的方法,就会照你说的做。

标签: python python-2.7 openstack openstack-swift


【解决方案1】:

这不是库的问题,而是由于 Openstack Swift 配置的限制,其中 Openstack Swift 的所有 Account/Container/Object 配置中的“Workers”配置设置为 1

关于图书馆

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

但是如果请求使用的是同一个连接,后续的请求会被阻塞,直到响应被完全读取。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2015-07-04
    • 1970-01-01
    • 2015-12-17
    • 2012-05-17
    • 2023-03-25
    相关资源
    最近更新 更多