Tengo un servidor Apache con una configuración predeterminada de Elasticsearch y todo funciona perfectamente, excepto que la configuración predeterminada tiene un tamaño máximo de 1GB.
No tengo tantos documentos para almacenar en Elasticsearch, así que quiero reducir la memoria.
He visto que tengo que cambiar el -Xmx
parámetro en la configuración de Java, pero no sé cómo.
He visto que puedo ejecutar esto:
bin/ElasticSearch -Xmx=2G -Xms=2G
Pero cuando tenga que reiniciar Elasticsearch, esto se perderá.
¿Es posible cambiar el uso máximo de memoria cuando Elasticsearch está instalado como servicio?
elasticsearch
Patxi1980
fuente
fuente
index.number_of_shards: 1 index.number_of_replicas: 0
esta manera, ahorra en memoria y CPU al no hacer un trabajo innecesario .Respuestas:
En ElasticSearch> = 5, la documentación ha cambiado , lo que significa que ninguna de las respuestas anteriores funcionó para mí.
Intenté cambiar
ES_HEAP_SIZE
de entrada/etc/default/elasticsearch
y de entradaetc/init.d/elasticsearch
, pero cuando ejecutéps aux | grep elasticsearch
la salida todavía mostraba:/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram
Tuve que hacer estos cambios en:
/etc/elasticsearch/jvm.options
fuente
/usr/local/opt/elasticsearch/libexec/config/jvm.options
/usr/local/etc/elasticsearch/jvm.options
Actualizado el 24 de noviembre de 2016 : Elasticsearch 5 aparentemente ha cambiado la forma de configurar la JVM. Vea esta respuesta aquí . La respuesta a continuación todavía se aplica a las versiones <5.
tirdadc, gracias por señalar esto en su comentario a continuación.
Tengo una página de pastebin que comparto con otros cuando me pregunto sobre la memoria y ES. Me ha funcionado bien: http://pastebin.com/mNUGQCLY . Pegaré el contenido aquí también:
Referencias:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
Edite los siguientes archivos para modificar la memoria y los límites de número de archivo. Estas instrucciones asumen Ubuntu 10.04, pueden funcionar en versiones posteriores y otras distribuciones / sistemas operativos. ( Editar : esto también funciona para Ubuntu 14.04).
/etc/security/limits.conf :
/ etc / default / elasticsearch (en CentOS / RH: / etc / sysconfig / elasticsearch) :
/etc/elasticsearch/elasticsearch.yml :
fuente
/etc/default
encuentran en `/ etc / sysconfig '/etc/sysconfig/elasticsearch
es el lugar apropiado para realizar estos cambios. El RPM incluso proporciona una versión predeterminada de este archivo allí también./etc/security/limits.d/elasticsearch.conf
Para cualquiera que busque hacer esto en Centos 7 o con otro sistema que ejecute SystemD, lo cambia en
Descomente la línea ES_HEAP_SIZE y establezca un valor, por ejemplo:
(Ignore el comentario sobre 1g máx., Ese es el valor predeterminado)
fuente
Instrucciones para
ubuntu 14.04
:sudo vim /etc/init.d/elasticsearch
Conjunto
ES_HEAP_SIZE=512m
luego en:
sudo vim /etc/elasticsearch/elasticsearch.yml
Conjunto:
bootstrap.memory_lock: true
Hay comentarios en los archivos para obtener más información.
fuente
Las respuestas anteriores fueron insuficientes en mi caso, probablemente porque estoy en Debian 8, mientras que se referían a alguna distribución anterior.
En Debian 8, modifique el script de servicio que normalmente se coloca
/usr/lib/systemd/system/elasticsearch.service
y agregueEnvironment=ES_HEAP_SIZE=8G
justo debajo de las otras líneas "Environment = *".Ahora vuelva a cargar el script de servicio
systemctl daemon-reload
y reinicie el servicio. ¡El trabajo debería estar hecho!fuente
/usr/
?Si utiliza el contenedor de servicios proporcionado en el repositorio Github de Elasticsearch, que se encuentra en https://github.com/elasticsearch/elasticsearch-servicewrapper , entonces el archivo conf en elasticsearch-servicewrapper / service / elasticsearch.conf controla la configuración de la memoria. En la parte superior de elasticsearch.conf hay un parámetro:
Simplemente reduzca este parámetro, digamos "set.default.ES_HEAP_SIZE = 512", para reducir la memoria asignada de Elasticsearch.
Tenga en cuenta que si utiliza elasticsearch-wrapper, ES_HEAP_SIZE proporcionado en elasticsearch.conf ANULA TODAS LAS DEMÁS CONFIGURACIONES. Esto me tomó un poco entender, ya que a partir de la documentación, parecía que la memoria del montón se podía configurar desde elasticsearch.yml.
Si la configuración de su contenedor de servicio se establece en otro lugar, como en / etc / default / elasticsearch como en el ejemplo de James, entonces configure ES_HEAP_SIZE allí.
fuente
export ES_HEAP_SIZE=1G; bin/elasticsearch -d
Si instaló ES usando los paquetes RPM / DEB como se proporcionan (como parece que lo hizo), puede ajustar esto editando el script de inicio (
/etc/init.d/elasticsearch on RHEL/CentOS
). Si echa un vistazo al archivo, verá un bloque con lo siguiente:Para ajustar el tamaño, simplemente cambie la
ES_HEAP_SIZE
línea a lo siguiente:(donde x es la cantidad de MB / GB de RAM que le gustaría asignar)
Ejemplo:
Asignaría 1GB.
Una vez que haya editado el script, guarde y salga, luego reinicie el servicio. Puede comprobar si se ha configurado correctamente ejecutando lo siguiente:
Y verificando los indicadores -Xms y -Xmx en el proceso de Java que devuelve:
Espero que esto ayude :)
fuente
No establezca Xmx por encima del límite que utiliza la JVM para los punteros de objetos comprimidos (oops comprimidos), el límite exacto varía pero está cerca de 32 GB.
También es posible establecer el tamaño del montón a través de una variable de entorno
fuente
En el directorio de inicio de la ruta de búsqueda elástica, es decir
/usr/share/elasticsearch
, normalmente , hay un archivo de configuraciónbin/elasticsearch.in.sh
. Editar parámetroES_MIN_MEM
,ES_MAX_MEM
en este archivo para cambiar-Xms2g
,-Xmx4g
respectivamente. Y asegúrese de haber reiniciado el nodo después de este cambio de configuración.fuente
Si usa Windows Server, puede cambiar la variable de entorno, reiniciar el servidor para aplicar un nuevo valor de entorno e iniciar Elastic Service. Más detalles en Instalar Elastic en Windows Server
fuente
En elasticsearch 2.x:
Ir al bloque de código
Descomentar la última línea como
fuente