现在的位置: 首页 > 数据库 > 正文

怎样优化CouchDB突破C10K限制

2020年07月02日 数据库 ⁄ 共 1325字 ⁄ 字号 评论关闭

C10K的字面意思是10000并发请求,C10K问题的简单描述就是一个网络服务并发极限为10k的问题。在当今的技术环境下,C10K其实对很多服务来说已经不是问题。下面学步园小编来讲解下怎样优化CouchDB突破C10K限制?

怎样优化CouchDB突破C10K限制

第一次测试

采用这个脚本启动服务,然后使用blitz的压测服务,使用下面的命令定制测试方法,前30秒将并发从1长到1024,然后维持在1024上30秒。

-rcalifornia-p1-1024:30,1024-1024:30http://our.couch/

得到的结果如下:

当并发量到1024后,各项参数指标都波动很厉害,错误频发。我们看到图中绿色的响应时间也直线上升。

这个问题是很容易解决的,因为couchdb目前是跑在非特权的couchdb用户下,其打开文件数上限按系统默认的是1024,所以首先修改这个值:

echo"couchdb-nofile10240">>/etc/security/limits.conf

然后我们再调整一些网络参数:

cat<<'EOF'>>/etc/sysctl.conf

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.ipv4.tcp_rmem=40968738016777216

net.ipv4.tcp_wmem=40966553616777216

net.ipv4.tcp_mem=505766476898152

net.ipv4.tcp_no_metrics_save=1

net.core.netdev_max_backlog=5000

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_max_syn_backlog=100000

net.ipv4.tcp_sack=0

net.core.somaxconn=65535

net.ipv4.ip_local_port_range=102465535

EOF

同样,再加上对传输缓冲区的大小调整

ifconfigeth0txqueuelen10000

怎样优化CouchDB突破C10K限制

第二次测试

这次我们修改测试的参数,将最大并发调整到10k,得出下面的结果:

结果显示,在并发达到2300之前,响应时间基本上是一条直线,而并发超过2300以后,响应时间出现了比较大的波动。虽然响应时间从几毫秒上升到了几秒,但总的来说,达到了C10K的限制。

这个测试中CouchDB并没有进行任何DB操作和View操作,测试结果仅仅是对CouchDB在MochiWeb服务器(Erlang的Web服务器)上的纯性能指标。

作者也指出,实际上此文只是一个简单的优化与测试,实际上期待有更多的优化方案能够出现并分享出来。比如可以将Erlang的malloc/free系统调用换成效率更高的tcmalloc调用,还有在任务调度,处理器数,堆栈大小以及垃圾回收等方面都期望能有更进一步的优化方案。

以上就是关于“怎样优化CouchDB突破C10K限制”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.