所以我在一台小型服务器上没有太多的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
。不幸的是,它并没有继续我需要改变的东西。帮助将不胜感激。
答案 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