【发布时间】:2014-03-09 20:45:33
【问题描述】:
我遇到了 CouchDB 的性能问题。
用例:我正在研究从 RDBMS 检索数据并将它们处理成 JSON 文档并将它们 POST 到 CouchDB 的过程。
我正在尝试发布大约 50 万个文档,其中大部分以 10,000 个批次 (_bulk_doc) 的形式发布,并且尝试了 5,000、15,000 和 20,000 个批次。
整个过程大约需要 90-100 分钟。
在进程的生命周期中,CouchDB 的内存消耗不断增长,当 CouchDB 完成工作时内存不会释放。
因此,如果 CouchDB 的内存消耗在进程完成时为 60%,则内存消耗将保持在 60% 并且不会减少。
随后,当进程再次开始运行时。内存消耗已达到最大值,CouchDB 会自行重新启动。此重新启动使我正在运行的过程失败。查看 Syslogs ,我看到 CouchDB 进程和终止语句的 Out Of Memory Error。
有问题的 CouchDb 进程是 Erlang 的“beam.smp”。
此时,我已经尝试升级服务器的内存,看看是否可以解决问题,不幸的是,问题仍然存在。内存泄漏存在并且使用量不断增长,直到 CouchDB 重新启动/崩溃。
我也尝试过从 Erlang 命令 (erlang:garbage_collect().) 行运行垃圾收集,但它没有做任何事情。
在这一点上,我没有想法,不确定这里发生了什么。任何意见/建议都非常感谢!
环境: 平台:Linux(Red Hat 6.4 版(圣地亚哥)) CouchDB:1.3,也尝试过 1.5 内存:2G、4G 和 8G 都试过 CPU:2核 进程:/usr/lib64/erlang/erts-5.8.5/bin/beam.smp -Bd -K true -A 4 -- -root /usr/lib64/erlang
【问题讨论】:
标签: memory-leaks erlang couchdb out-of-memory