2015-12-15 31 views
2

性能问题我有一个CouchDB的集群(复制)由两个相同的盒子。它是主 - 主集群,有两个文件A和B,A是B的四倍,4KB和16KB。另外,在CouchDB实例之前有一个HTTP ELB,它启用了粘性会话。我观察以下行为:与Amazon ELB和CouchDB的

一个)当我直接从CouchDB的检索文档,省略ELB,无论文档表现良好,平均〜1000转/秒

b)如果我通过ELB连接,我观察文件A〜250r/s的性能下降。文档B仍然表现良好〜1000R/S

C)的当代替ELB我设置HAProxy的没有性能退化。

我做了一对情侣在ELB配置的调整,跨区域负载均衡,多AZ,粘性会话的条款,但没有任何改善尝试不同的设置。

我跑CouchDB的1.6.0,并测试由围困3.0.5执行。

HAProxy的和ELB之间的唯一区别是,ELB使用连接:保持活跃。

回答

0

原来CouchDB的配置是问题。根据CouchDB文档(http://wiki.apache.org/couchdb/Performance#Network):

HTTP服务器库Mochiweb默认将TCP套接字选项SO_NODELAY设置为false。这意味着发送到TCP套接字的小数据(如回复文档写入请求(或读取非常小的文档))将不会立即发送到网络 - TCP将缓冲它一段时间,希望它会被询问通过同一套接字发送更多数据,然后一次发送所有数据以提高性能。

您可以禁用添加行为以下的CouchDB的配置:

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

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