Elasticsearch 2.4 jvm.options 在 MacOS Mojave 上被忽略(Homebrew 安装)

Elasticsearch 2.4 jvm.options ignored on MacOS Mojave (Homebrew install)

我已经通过 HomeBrew 在 mac 上安装了 ElasticSearch 2.4。我正在尝试查看是否可以增加 ElasticSearch 的 JVM 堆大小。

我在 /usr/local/etc/elasticsearch/jvm.options

中更改了以下行(将堆大小设置为 8 gig)
-Xms8g
-Xmx8g

然后我使用 brew services restart elasticsearch@2.4 和 运行 curl localhost:9200/_nodes/stats/jvm?pretty 重新启动服务来检查 JVM 大小,但我回来了:

"mem" : {
      "heap_used_in_bytes" : 144690472,
      "heap_used_percent" : 13,
      "heap_committed_in_bytes" : 259522560,
      "heap_max_in_bytes" : 1038876672,
      "non_heap_used_in_bytes" : 62484680,
      "non_heap_committed_in_bytes" : 65093632,
      ...

为什么我的 Xms8gXmx8g 标志在 jvm.options 中被忽略了,我应该怎么做才能让 elsaticsearch 尊重它们?

我的行动基于:How to change Elasticsearch max memory size

想通了!

您需要更改通过 plist 传递的用于启动 elasticsearch 的环境变量。

/usr/local/Cellar/elasticsearch@2.4/2.4.6/homebrew.mxcl.elasticsearch@2.4.plist中,在<key>EnvironmentVariables</key>键下,添加:

<dict>
  <key>ES_HEAP_SIZE</key>
  <string>2g</string>
</dict>

注意,~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist 中还有另一个 plist。更改它没有任何作用,因为它在重新启动时被 brew services 覆盖。

另外请注意,在您的系统上有两个 jvm.options 文件与 ElasticSearch 相关:

  • /usr/local/Cellar/elasticsearch@2.4/2.4.6/libexec/config

  • /usr/local/etc/elasticsearch/jvm.options

看起来其中一个只是另一个的符号链接,更改其中任何一个中的内存标志绝对没有任何作用。