heap_size.asciidoc 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. [[heap-size]]
  2. === Set JVM heap size via jvm.options
  3. In development mode, Elasticsearch tells the JVM to use a heap with a minimum
  4. size of 256 MB and a maximum size of 1 GB. When moving to production, it is
  5. important to configure heap size to ensure that Elasticsearch has enough
  6. heap available.
  7. Elasticsearch will assign the entire heap specified in <<sysconfig,es-java-opts>>
  8. via the Xms (minimum heap size) and Xmx (maximum heap size) settings.
  9. The value for these setting depends on the amount of RAM available on
  10. your server. Good rules of thumb are:
  11. * Set the minimum heap size (Xms) and maximum heap size (Xmx) to be
  12. equal to each other.
  13. * The more heap available to Elasticsearch, the more memory it can use for
  14. caching. But note that too much heap can subject you to long garbage
  15. collection pauses.
  16. * Set Xmx to no more than 50% of your physical RAM, to ensure that there
  17. is enough physical RAM left for kernel file system caches.
  18. * Don’t set Xmx to above the cutoff that the JVM uses for compressed
  19. object pointers (compressed oops); the exact cutoff varies but is
  20. near 32 GB. You can verify that you are under the limit by looking
  21. for a line in the logs like the following:
  22. heap size [1.9gb], compressed ordinary object pointers [true]
  23. * Even better, try to stay below the threshold for zero-based
  24. compressed oops; the exact cutoff varies but 26 GB is safe on most
  25. systems, but can be as large as 30 GB on some system. You can verify
  26. that you are under the limit by starting Elasticsearch with the JVM
  27. options "-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode"
  28. and looking for a line like the following:
  29. heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops
  30. showing that zero-based compressed oops are enabled instead of
  31. heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000
  32. Here are examples of how to set the heap size via the jvm.options file:
  33. [source]
  34. ------------------
  35. Xms2g <1>
  36. Xmx2g <2>
  37. ------------------
  38. <1> Set the minimum heap size to 2g.
  39. <2> Set the maximum heap size to 2g.
  40. It is also possible to set the heap size via an environment variable.
  41. This can be done by commenting out the `Xms` and `Xmx` settings
  42. in the jvm.options file and setting these values via `ES_JAVA_OPTS`:
  43. [source,sh]
  44. ------------------
  45. ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch <3>
  46. ES_JAVA_OPTS="-Xmx4000mb -Xmx4000mb" ./bin/elasticsearch <4>
  47. ------------------
  48. <3> Set the minimum and maximum heap size to 2 GB.
  49. <4> Set the minimum and maximum heap size to 4000 MB.