123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- [[setting-system-settings]]
- === Configuring system settings
- Where to configure systems settings depends on which package you have used to
- install Elasticsearch, and which operating system you are using.
- When using the `.zip` or `.tar.gz` packages, system settings can be configured:
- * temporarily with <<ulimit,`ulimit`>>, or
- * permanently in <<limits.conf,`/etc/security/limits.conf`>>.
- When using the RPM or Debian packages, most system settings are set in the
- <<sysconfig,system configuration file>>. However, systems which use systemd
- require that system limits are specified in a
- <<systemd,systemd configuration file>>.
- [[ulimit]]
- ==== `ulimit`
- On Linux systems, `ulimit` can be used to change resource limits on a
- temporary basis. Limits usually need to be set as `root` before switching to
- the user that will run Elasticsearch. For example, to set the number of
- open file handles (`ulimit -n`) to 65,536, you can do the following:
- [source,sh]
- --------------------------------
- sudo su <1>
- ulimit -n 65536 <2>
- su elasticsearch <3>
- --------------------------------
- <1> Become `root`.
- <2> Change the max number of open files.
- <3> Become the `elasticsearch` user in order to start Elasticsearch.
- The new limit is only applied during the current session.
- You can consult all currently applied limits with `ulimit -a`.
- [[limits.conf]]
- ==== `/etc/security/limits.conf`
- On Linux systems, persistent limits can be set for a particular user by
- editing the `/etc/security/limits.conf` file. To set the maximum number of
- open files for the `elasticsearch` user to 65,536, add the following line to
- the `limits.conf` file:
- [source,sh]
- --------------------------------
- elasticsearch - nofile 65536
- --------------------------------
- This change will only take effect the next time the `elasticsearch` user opens
- a new session.
- [NOTE]
- .Ubuntu and `limits.conf`
- ===============================
- Ubuntu ignores the `limits.conf` file for processes started by `init.d`. To
- enable the `limits.conf` file, edit `/etc/pam.d/su` and uncomment the
- following line:
- [source,sh]
- --------------------------------
- # session required pam_limits.so
- --------------------------------
- ===============================
- [[sysconfig]]
- ==== Sysconfig file
- When using the RPM or Debian packages, system settings and environment
- variables can be specified in the system configuration file, which is located
- in:
- [horizontal]
- RPM:: `/etc/sysconfig/elasticsearch`
- Debian:: `/etc/default/elasticsearch`
- However, for systems which uses `systemd`, system limits need to be specified
- via <<systemd,systemd>>.
- [[systemd]]
- ==== Systemd configuration
- When using the RPM or Debian packages on systems that use
- https://en.wikipedia.org/wiki/Systemd[systemd], system limits must be
- specified via systemd.
- The systemd service file (`/usr/lib/systemd/system/elasticsearch.service`)
- contains the limits that are applied by default.
- To override these, add a file called
- `/etc/systemd/system/elasticsearch.service.d/elasticsearch.conf` and specify
- any changes in that file, such as:
- [source,sh]
- ---------------------------------
- LimitMEMLOCK=infinity
- ---------------------------------
- [[jvm-options]]
- ==== Setting JVM options
- The preferred method of setting Java Virtual Machine options (including
- system properties and JVM flags) is via the `jvm.options` configuration
- file. The default location of this file is `config/jvm.options` (when
- installing from the tar or zip distributions) and
- `/etc/elasticsearch/jvm.options` (when installing from the Debian or RPM
- packages). This file contains a line-delimited list of JVM arguments,
- which must begin with `-`. You can add custom JVM flags to this file and
- check this configuration into your version control system.
- An alternative mechanism for setting Java Virtual Machine options is
- via the `ES_JAVA_OPTS` environment variable. For instance:
- [source,sh]
- ---------------------------------
- export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
- ./bin/elasticsearch
- ---------------------------------
- When using the RPM or Debian packages, `ES_JAVA_OPTS` can be specified in the
- <<sysconfig,system configuration file>>.
|