gpt4 book ai didi

http - Amazon ELB 和 CouchDB 的性能问题

转载 作者:可可西里 更新时间:2023-11-01 16:41:29 28 4
gpt4 key购买 nike

我有一个由两个相同的盒子组成的 CouchDB 集群(复制)。它是主-主集群,有两个文档 A 和 B,A 比 B 小四倍,4KB vs 16KB。此外,在启用了粘性 session 的 CouchDB 实例前面还有一个 HTTP ELB。我正在观察以下行为:

a) 当我直接从 CouchDB 检索文档时,忽略 ELB,两个文档都表现良好,平均 ~1000 r/s

b) 当我通过 ELB 连接时,我观察到文档 A 的性能下降 ~250 r/s。 Document B 仍然表现良好~1000r/s

c) 当我设置 HAProxy 而不是 ELB 时,性能没有下降。

我在 ELB 配置中做了一些调整,尝试在跨区域负载平衡、多可用区、粘性 session 方面进行不同的设置,但没有任何改进。

我正在运行 CouchDB 1.6.0,测试由 siege 3.0.5 执行。

HAProxy 和 ELB 的唯一区别是 ELB 使用的是 Connection: keep-alive。

最佳答案

事实证明,问题出在 CouchDB 配置上。根据 CouchDB 文档 ( http://wiki.apache.org/couchdb/Performance#Network ):

The HTTP server library Mochiweb, by default sets the TCP socket option SO_NODELAY to false. This means that small data sent to the TCP socket, like the reply to a document write request (or reading a very small document), will not be sent immediately to the network - TCP will buffer it for a while hoping that it will be asked to send more data through the same socket and then send all the data at once for increased performance.

您可以通过将以下内容添加到 CouchDB 配置来禁用该行为:

[httpd]
socket_options = [{nodelay, true}]

这就是为什么我在不使用持久连接的情况下观察到更好性能的原因。

关于http - Amazon ELB 和 CouchDB 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293069/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com