如何在 Nixos 上设置 Elasticsearch 的 Java 堆大小?

如何在 Nixos 上设置 Elasticsearch 的 Java 堆大小?

看来这些应该放在${configDir}/jvm.options"}/var/lib/elasticsearch/config/jvm.options?)查看包装中https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/search/elasticsearch.nix

也许我可以使用ES_JAVA_OPTS环境变量?

使用services.elasticsearch.extraJavaOptions不起作用,因为-Xms1g -Xmx1g默认情况下似乎正在传递某些内容:

输出来自ps aux

弹性+ 21271 30.8 47.5 4456956 950968 Ssl 01:03 3:41 /nix/store/9c5a9fq2vd6qah77nmg87sjq5wbss1kj-openjdk-8u212-ga-jre/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOn ly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty。 recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.uQNUAfPs -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=数据 -XX:ErrorFile=logs/ hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Xms512m -Xmx512m -Des.path.home=/var/lib/elasticsearch -Des.path.conf=/var/lib/elasticsearch/config -Des.distribution.flavor=默认 -Des.distribution.type=tar -cp /var/lib/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch

答案1

也许有点矫枉过正,但我​​不太确定如何覆盖 Nixos 服务的参数。

本质上是默认选项,.../jvm.options所以我从 Github 复制了 elasticsearch.nix 并修改了以下内容:

        ${optionalString es6 "sed -i '/-Xms1g/d' ${configDir}/jvm.options"}
        ${optionalString es6 "sed -i '/-Xmx1g/d' ${configDir}/jvm.options"}

随着更改服务名称(否则我认为它会发生冲突)。然后我只是将这个 nix 表达式包含到我的配置中,它似乎正在使用ES_JAVA_OPTS.

相关内容