![如何在 Nixos 上设置 Elasticsearch 的 Java 堆大小?](https://linux22.com/image/148415/%E5%A6%82%E4%BD%95%E5%9C%A8%20Nixos%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%20Elasticsearch%20%E7%9A%84%20Java%20%E5%A0%86%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
看来这些应该放在${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
.