memory-leaks - CouchDB 内存泄漏 - 性能问题

标签 memory-leaks erlang couchdb out-of-memory

我遇到了 CouchDB 的性能问题。

用例:我正在处理一个从 RDBMS 检索数据并将它们处理成 JSON 文档并将它们发布到 CouchDB 的过程。

我正在尝试发布大约 50 万个文档,其中大部分以 10,000 个为一批 (_bulk_doc),并且尝试过 5,000、15,000 和 20,000 个批处理。

整个过程大约需要 90-100 分钟。

在进程的生命周期中,CouchDB 的内存消耗不断增长,当 CouchDB 完成工作时内存不会被释放。

因此,如果在进程完成时 CouchDB 的内存消耗为 60%,则内存消耗将保持 60% 而不会减少。

随后,当进程再次开始运行时。内存消耗达到最大值,CouchDB 自行重启。这次重新启动使我正在运行的进程失败。查看 Syslogs,我看到 CouchDB 进程和终止语句导致内存不足错误。

有问题的 CouchDb 进程是 Erlang 的“beam.smp”。

此时,我已尝试升级服务器内存以查看是否可以解决问题,不幸的是,问题仍然存在。存在内存泄漏并且使用量持续增长,直到 CouchDB 重新启动/崩溃。

我也尝试过从 Erlang 命令 (erlang:garbage_collect().) 行运行垃圾收集,但它没有做任何事情。

在这一点上,我没有想法,不确定这里发生了什么。非常感谢任何输入/建议!

环境: 平台:Linux(Red Hat 6.4 版(Santiago)) CouchDB:1.3 也尝试过 1.5 RAM:尝试使用 2G、4G 和 8G 中央处理器:2核 进程:/usr/lib64/erlang/erts-5.8.5/bin/beam.smp -Bd -K true -A 4 -- -root/usr/lib64/erlang

最佳答案

您使用的是哪种 JSON 解析器?你知道在 Erlang 中原子不会被垃圾回收吗?因此,如果您的解析器正在创建新原子,它们将永远存在,最终耗尽您的所有内存。

关于memory-leaks - CouchDB 内存泄漏 - 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712456/

相关文章:

string - Erlang 术语到 Unicode 字符串

模块中不存在 Erlang 函数?

project-management - 将Couch-DB提升为管理层

elasticsearch - 当CouchDB 2.0具有/db/_find时,为什么将Elasticsearch与CouchDB一起使用?

java - "Could not register destruction callback"警告消息导致内存泄漏?

c - zlib inflateReset 导致内存泄漏(不是)

erlang - 进程字典或循环参数?

http - Amazon ELB 和 CouchDB 的性能问题

Java - GC一个大字符串

c++ - 为什么我需要删除[]?