减少数据存储器的使用量

时间:2014-09-29 14:44:52

标签: datomic

所以我在一台小型服务器上没有太多的ram备用,当我尝试运行datomic时,它对我很生气!

Launching with Java options -server -Xms1g -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=50
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000b5a00000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid1662.log

我遇到过这样的问题:https://groups.google.com/forum/#!topic/datomic/5_ZPZBFmCJg说我需要更改更多而不仅仅是 我的transactor .properties文件中的object-cache-max。不幸的是,它并没有继续我需要改变的东西。帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您可以阅读capacity planning上的文档,了解有关配置Datomic交易器的更多背景信息。正如组问题所提到的那样,-Xms1g和-Xmx1g设置正在请求一堆RAM。在这种情况下,我链接的文档显示了解决方案的一部分:

  

您可以使用以下命令设置JVM进程可用的最大内存   -Xmx标志为java(或bin / transactor)。

Microsomic不支持Datomic部署,但有一些是在野外成功运行(写入负载非常低)。例如,您可以尝试这样的配置:

memory-index-threshold=16m
memory-index-max=64m
object-cache-max=128m

-Xmx设置为512MB。如报告here所述,这可能会在AWS等中采取其他步骤。但基本答案是,您需要减小最大堆大小,并尝试使用每个其他内存设置的减少值来适应较低的设置。

答案 1 :(得分:2)

要添加一些具体的细节,我必须让它运作起来:

some-transactor.properties

memory-index-threshold=16m
memory-index-max=64m
object-cache-max=128m

使用以下命令运行transactor:

$ /path/to/bin/transactor -Xms512m -Xmx512m /path/to/some-transactor.properties