forked from elastic/built-docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadvanced-configuration.html
388 lines (364 loc) · 20.8 KB
/
advanced-configuration.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Advanced configuration | Elasticsearch Guide [8.10] | Elastic</title>
<meta class="elastic" name="content" content="Advanced configuration | Elasticsearch Guide [8.10]">
<link rel="home" href="index.html" title="Elasticsearch Guide [8.10]"/>
<link rel="up" href="settings.html" title="Configuring Elasticsearch"/>
<link rel="prev" href="notification-settings.html" title="Watcher settings in Elasticsearch"/>
<link rel="next" href="system-config.html" title="Important system configuration"/>
<meta class="elastic" name="product_version" content="8.10"/>
<meta class="elastic" name="product_name" content="Elasticsearch"/>
<meta class="elastic" name="website_area" content="documentation"/>
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/8.10"/>
<meta name="DC.subject" content="Elasticsearch"/>
<meta name="DC.identifier" content="8.10"/>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.optimizely.com/js/18132920325.js"></script>
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="/manifest.json">
<meta name="apple-mobile-web-app-title" content="Elastic">
<meta name="application-name" content="Elastic">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd" />
<meta name="yandex-verification" content="d8a47e95d0972434" />
<meta name="localized" content="true" />
<meta name="st:robots" content="follow,index" />
<meta property="og:image" content="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt280217a63b82a734/6202d3378b1f312528798412/elastic-logo.svg" />
<meta property="og:image:width" content="500" />
<meta property="og:image:height" content="172" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
<link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
<link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
<!-- Give IE8 a fighting chance -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="/guide/static/styles.css" />
</head>
<!--© 2015-2022 Elasticsearch B.V. -->
<!-- All Elastic documentation is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. -->
<!-- http://creativecommons.org/licenses/by-nc-nd/4.0/ -->
<body>
<!-- Google Tag Manager -->
<script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
<!-- End Google Tag Manager -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-12395217-16');
</script>
<!-- Google Tag Manager for GA4 -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-KNJMG2M');</script>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KNJMG2M" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager for GA4-->
<div id='elastic-nav' style="display:none;"></div>
<script src='https://www.elastic.co/elastic-nav.js'></script>
<div class="main-container">
<section id="content" >
<div class="content-wrapper">
<section id="guide" lang="en">
<div class="container-fluid">
<div class="row pb-3">
<div class="col-12 order-2 col-md-4 order-md-1 col-lg-3 h-almost-full-md sticky-top-md" id="left_col">
<!-- The TOC is appended here -->
</div>
<div class="col-12 order-1 col-md-8 order-md-2 col-lg-7 order-lg-2 guide-section" id="middle_col">
<!-- start body -->
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="/guide/">Elastic Docs</a></span>
<span class="chevron-right">›</span><span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [8.10]</a></span>
<span class="chevron-right">›</span><span class="breadcrumb-link"><a href="setup.html">Set up Elasticsearch</a></span>
<span class="chevron-right">›</span><span class="breadcrumb-link"><a href="settings.html">Configuring Elasticsearch</a></span>
</div>
<div class="navheader">
<span class="prev">
<a href="notification-settings.html">« Watcher settings in Elasticsearch</a>
</span>
<span class="next">
<a href="system-config.html">Important system configuration »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title"><a id="advanced-configuration"></a>Advanced configuration<a class="edit_me" rel="nofollow" title="Edit this page on GitHub" href="https://github.com/elastic/elasticsearch/edit/8.10/docs/reference/setup/advanced-configuration.asciidoc">edit</a></h2>
</div></div></div>
<p>Modifying advanced settings is generally not recommended and could negatively
impact performance and stability. Using the Elasticsearch-provided defaults
is recommended in most circumstances.</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title"><a id="set-jvm-options"></a>Set JVM options<a class="edit_me" rel="nofollow" title="Edit this page on GitHub" href="https://github.com/elastic/elasticsearch/edit/8.10/docs/reference/setup/advanced-configuration.asciidoc">edit</a></h3>
</div></div></div>
<p>If needed, you can override the default JVM options by adding custom options
files (preferred) or setting the <code class="literal">ES_JAVA_OPTS</code> environment variable.</p>
<p>JVM options files must have the suffix <em>.options</em> and contain a line-delimited
list of JVM arguments. JVM processes options files in lexicographic order.</p>
<p>Where you put the JVM options files depends on the type of installation:</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
tar.gz or .zip: Add custom JVM options files to <code class="literal">config/jvm.options.d/</code>.
</li>
<li class="listitem">
Debian or RPM: Add custom JVM options files to <code class="literal">/etc/elasticsearch/jvm.options.d/</code>.
</li>
<li class="listitem">
Docker: Bind mount custom JVM options files into
<code class="literal">/usr/share/elasticsearch/config/jvm.options.d/</code>.
</li>
</ul>
</div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>Do not modify the root <code class="literal">jvm.options</code> file. Use files in <code class="literal">jvm.options.d/</code> instead.</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title"><a id="jvm-options-syntax"></a>JVM options syntax<a class="edit_me" rel="nofollow" title="Edit this page on GitHub" href="https://github.com/elastic/elasticsearch/edit/8.10/docs/reference/setup/advanced-configuration.asciidoc">edit</a></h4>
</div></div></div>
<p>A JVM options file contains a line-delimited list of JVM arguments.
Arguments are preceded by a dash (<code class="literal">-</code>).
To apply the setting to specific versions, prepend the version
or a range of versions followed by a colon.</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>Apply a setting to all versions:</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">-Xmx2g</pre>
</div>
</li>
<li class="listitem">
<p>Apply a setting to a specific version:</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">17:-Xmx2g</pre>
</div>
</li>
<li class="listitem">
<p>Apply a setting to a range of versions:</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">17-18:-Xmx2g</pre>
</div>
<p>To apply a setting to a specific version and any later versions,
omit the upper bound of the range.
For example, this setting applies to Java 8 and later:</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">17-:-Xmx2g</pre>
</div>
</li>
</ul>
</div>
<p>Blank lines are ignored. Lines beginning with <code class="literal">#</code> are treated as comments
and ignored. Lines that aren’t commented out and aren’t recognized
as valid JVM arguments are rejected and Elasticsearch will fail to start.</p>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title"><a id="jvm-options-env"></a>Use environment variables to set JVM options<a class="edit_me" rel="nofollow" title="Edit this page on GitHub" href="https://github.com/elastic/elasticsearch/edit/8.10/docs/reference/setup/advanced-configuration.asciidoc">edit</a></h4>
</div></div></div>
<p>In production, use JVM options files to override the
default settings. In testing and development environments,
you can also set JVM options through the <code class="literal">ES_JAVA_OPTS</code> environment variable.</p>
<div class="pre_wrapper lang-sh">
<pre class="programlisting prettyprint lang-sh">export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch</pre>
</div>
<p>If you’re using the RPM or Debian packages, you can specify
<code class="literal">ES_JAVA_OPTS</code> in the <a class="xref" href="setting-system-settings.html#sysconfig" title="Sysconfig file">system configuration file</a>.</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>Elasticsearch ignores the <code class="literal">JAVA_TOOL_OPTIONS</code> and <code class="literal">JAVA_OPTS</code> environment variables.</p>
</div>
</div>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title"><a id="set-jvm-heap-size"></a>Set the JVM heap size<a class="edit_me" rel="nofollow" title="Edit this page on GitHub" href="https://github.com/elastic/elasticsearch/edit/8.10/docs/reference/setup/advanced-configuration.asciidoc">edit</a></h3>
</div></div></div>
<p>By default, Elasticsearch automatically sets the JVM heap size based on a node’s
<a class="xref" href="modules-node.html#node-roles" title="Node roles">roles</a> and total memory.
Using the default sizing is recommended for most production environments.</p>
<p>To override the default heap size, set the minimum and maximum heap size
settings, <code class="literal">Xms</code> and <code class="literal">Xmx</code>. The minimum and maximum values must be the same.</p>
<p>The heap size should be based on the available RAM:</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>Set <code class="literal">Xms</code> and <code class="literal">Xmx</code> to no more than 50% of your total memory. Elasticsearch requires
memory for purposes other than the JVM heap. For example, Elasticsearch uses
off-heap buffers for efficient network communication and relies
on the operating system’s filesystem cache for
efficient access to files. The JVM itself also requires some memory. It’s
normal for Elasticsearch to use more memory than the limit
configured with the <code class="literal">Xmx</code> setting.</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>When running in a container, such as <a class="xref" href="docker.html" title="Install Elasticsearch with Docker">Docker</a>, total memory is
defined as the amount of memory visible to the container, not the total system
memory on the host.</p>
</div>
</div>
</li>
<li class="listitem">
<p>Set <code class="literal">Xms</code> and <code class="literal">Xmx</code> to no more than the threshold for compressed ordinary
object pointers (oops). The exact threshold varies but 26GB is safe on most
systems and can be as large as 30GB on some systems. To verify you are under the
threshold, check the Elasticsearch log for an entry like this:</p>
<div class="pre_wrapper lang-txt">
<pre class="programlisting prettyprint lang-txt">heap size [1.9gb], compressed ordinary object pointers [true]</pre>
</div>
<p>Or check the <code class="literal">jvm.using_compressed_ordinary_object_pointers</code> value for the nodes using the <a class="xref" href="cluster-nodes-info.html" title="Nodes info API">nodes info API</a>:</p>
<div class="pre_wrapper lang-ruby alternative">
<pre class="programlisting prettyprint lang-ruby alternative">response = client.nodes.info(
node_id: '_all',
metric: 'jvm'
)
puts response</pre>
</div>
<a id="7cd23457e220c8b64c5b0041d2acc27a"></a>
<div class="pre_wrapper lang-console default has-ruby">
<pre class="programlisting prettyprint lang-console default has-ruby">GET _nodes/_all/jvm</pre>
</div>
<div class="console_widget has-ruby" data-snippet="snippets/28.console"></div>
</li>
</ul>
</div>
<p>The more heap available to Elasticsearch, the more memory it can use for its internal
caches. This leaves less memory for the operating system to use
for the filesystem cache. Larger heaps can also cause longer garbage
collection pauses.</p>
<p>To configure the heap size, add the <code class="literal">Xms</code> and <code class="literal">Xmx</code> JVM arguments to a
custom JVM options file with the extension <code class="literal">.options</code> and
store it in the <code class="literal">jvm.options.d/</code> directory.
For example, to set the maximum heap size to 2GB, set both <code class="literal">Xms</code> and <code class="literal">Xmx</code> to <code class="literal">2g</code>:</p>
<div class="pre_wrapper lang-txt">
<pre class="programlisting prettyprint lang-txt">-Xms2g
-Xmx2g</pre>
</div>
<p>For testing, you can also set the heap sizes using the <code class="literal">ES_JAVA_OPTS</code>
environment variable:</p>
<div class="pre_wrapper lang-sh">
<pre class="programlisting prettyprint lang-sh">ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch</pre>
</div>
<p>The <code class="literal">ES_JAVA_OPTS</code> variable overrides all other JVM
options. We do not recommend using <code class="literal">ES_JAVA_OPTS</code> in production.</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>If you are running Elasticsearch as a Windows service, you can change the heap size
using the service manager. See <a class="xref" href="zip-windows.html#windows-service" title="Install and run Elasticsearch as a service on Windows">Install and run Elasticsearch as a service on Windows</a>.</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title"><a id="readiness-tcp-port"></a>Enable the Elasticsearch TCP readiness port<a class="edit_me" rel="nofollow" title="Edit this page on GitHub" href="https://github.com/elastic/elasticsearch/edit/8.10/docs/reference/setup/advanced-configuration.asciidoc">edit</a></h4>
</div></div></div>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<p>This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.</p>
</div>
</div>
<p>If configured, a node can open a TCP port when the node is in a ready state. A node is deemed
ready when it has successfully joined a cluster. In a single node configuration, the node is
said to be ready, when it’s able to accept requests.</p>
<p>To enable the readiness TCP port, use the <code class="literal">readiness.port</code> setting. The readiness service will bind to
all host addresses.</p>
<p>If the node leaves the cluster, or the <a class="xref" href="put-shutdown.html" title="Put shutdown API">Shutdown API</a> is used to mark the node
for shutdown, the readiness port is immediately closed.</p>
<p>A successful connection to the readiness TCP port signals that the Elasticsearch node is ready. When a client
connects to the readiness port, the server simply terminates the socket connection. No data is sent back
to the client. If a client cannot connect to the readiness port, the node is not ready.</p>
</div>
</div>
</div>
<div class="navfooter">
<span class="prev">
<a href="notification-settings.html">« Watcher settings in Elasticsearch</a>
</span>
<span class="next">
<a href="system-config.html">Important system configuration »</a>
</span>
</div>
</div>
<!-- end body -->
</div>
<div class="col-12 order-3 col-lg-2 order-lg-3 h-almost-full-lg sticky-top-lg" id="right_col">
<div id="sticky_content">
<!-- The OTP is appended here -->
<div class="row">
<div class="col-0 col-md-4 col-lg-0" id="bottom_left_col"></div>
<div class="col-12 col-md-8 col-lg-12">
<div id="rtpcontainer">
<div class="mktg-promo" id="most-popular">
<p class="aside-heading">Most Popular</p>
<div class="pb-2">
<p class="media-type">Video</p>
<a href="https://www.elastic.co/webinars/getting-started-elasticsearch?page=docs&placement=top-video">
<p class="mb-0">Get Started with Elasticsearch</p>
</a>
</div>
<div class="pb-2">
<p class="media-type">Video</p>
<a href="https://www.elastic.co/webinars/getting-started-kibana?page=docs&placement=top-video">
<p class="mb-0">Intro to Kibana</p>
</a>
</div>
<div class="pb-2">
<p class="media-type">Video</p>
<a href="https://www.elastic.co/webinars/introduction-elk-stack?page=docs&placement=top-video">
<p class="mb-0">ELK for Logs & Metrics</p>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div id='elastic-footer'></div>
<script src='https://www.elastic.co/elastic-footer.js'></script>
<!-- Footer Section end-->
</section>
</div>
<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
window.initial_state = {"alternatives":{"console":{"php":{"hasAny":true},"python":{"hasAny":true},"ruby":{"hasAny":true},"go":{"hasAny":true},"js":{"hasAny":true}}}}</script>
</body>
</html>