【问题标题】:Change JVM params for Solr更改 Solr 的 JVM 参数
【发布时间】:2018-09-12 20:21:40
【问题描述】:

如何为 dockerized Solr7 指定另一种类型的垃圾收集器? 我的docker启动命令如下:

docker run -d --restart always --name solrcloud \
-p 8983:8983 --net host myrepo/my-fusion-solr-image:latest \
bin/solr -c -f -a -javaagent:/opt/newrelic/newrelic.jar \
-Dnewrelic.environment=dev -Ddisable.configEdit=true \
-z dev-fusion-zk.aws.myhost.net:2181/dev-fusion -m 30g

我正在尝试关注这篇文章:https://wiki.apache.org/solr/ShawnHeisey 我应该在哪里指定-XX:+UseG1GC

【问题讨论】:

  • -e JAVA_OPTS='-XX:+UseG1GC' 可能会
  • 试过了,没用
  • -XX:+UseG1GC-javaagent 之前怎么样,这也是一个 JVM 参数?
  • 导致启动时出现“收集器设置冲突”消息,并且应用程序无法启动。我想出了答案,很快就会发布。

标签: docker solr garbage-collection jvm environment-variables


【解决方案1】:

在 Dockerfile for Solr 映像中,添加以下步骤:

# Use G1GC garbage collector
# https://wiki.apache.org/solr/ShawnHeisey
RUN sed -i -e 's/^#GC_TUNE.*/GC_TUNE=" \
-XX:+UseG1GC \
-XX:+PerfDisableSharedMem \
-XX:+ParallelRefProcEnabled \
-XX:G1HeapRegionSize=8m \
-XX:MaxGCPauseMillis=250 \
-XX:InitiatingHeapOccupancyPercent=75 \
-XX:+UseLargePages \
-XX:+AggressiveOpts \
"/' /opt/solr/solr-$SOLR_VERSION/bin/solr.in.sh

Solr 7.2.1 有这个文件bin/solr.in.sh,看起来它是专门添加来覆盖bin/solr 中的一些配置的。在bin/solr.in.sh 中有一个以#GC_TUNE= 开头的注释行。如果我们取消注释这一行,它将覆盖bin/solr 中的GC_TUNE 变量。

sed 上面 sn-p 中的命令将该行替换为所需的设置。请注意,sed 在不同环境中的行为可能不同,并且可能需要进行一些修改才能适用于您的情况。请在将其插入 dockerfile 之前对其进行测试。以上 sn-p 适用于 centos。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2018-08-02
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多