amazon-ec2 - started - logstash
ElasticSearch desaparece/se bloquea: no puede encontrar archivos de registro ni ninguna otra informaciĆ³n (2)
Experimenté los mismos problemas:
- JAVA actualizado no ayudó
- Pasar de openJDK a Oracle no cambió nada
- El consumo de memoria fue finalmente bien
- No hay mensaje de error en ninguna parte, solo JVM se bloquea aleatoriamente
Mi solución fue eliminar sigar lib:
cd
sudo mv /usr/share/elasticsearch/lib/sigar .
sudo service elasticsearch restart
Dado que, todo va bien, el único impacto: perdí la supervisión de la CPU. ElasticSearch 1.5.1 se está ejecutando en un VPS con Ubuntu 14.04 (OpenVZ).
ACTUALIZACIÓN 1: Todavía tengo que eliminar sigar lib con elasticsearch 1.5.2
ACTUALIZACIÓN 2: para averiguar, agregue estas opciones al iniciar elasticsearch:
-XX: HeapDumpPath =. / Java_pid.hprof
Ruta al directorio o nombre de archivo para volcado de pila. Manejable.
-XX: -HeapDumpOnOOutOfMemoryError
Volcar el montón al archivo cuando se lanza java.lang.OutOfMemoryError.
Ayudará para la depuración
Estoy ejecutando ElasticSearch en mis servidores EC2. Tengo problemas para entender el registro / depuración de ElasticSearch.
Ocasionalmente, el servicio desaparece, después de haber estado funcionando bien durante días (supongo que se está estrellando). P.ej:
# curl -XGET http://localhost:9200/
curl: (7) couldn''t connect to host
Por esta página de ElasticSearch , esperaba que mis registros estuvieran disponibles en /var/log/elasticsearch
... sin embargo ...
# ls /var/data/elasticsearch
ls: /var/data/elasticsearch: No such file or directory
No he cambiado el archivo /config/logging.yml
de ninguna manera. ElasticSearch se ejecuta como root, por lo que no debería haber ningún problema con los permisos.
¿Qué me estoy perdiendo?
Según la respuesta de imotov, encontré mis archivos de registro en /root/elasticsearch/elasticsearch-0.20.5/logs
... pero como él predijo, fueron muy inútiles.
Revisé mi versión de Java:
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
Parece que esta es una versión muy antigua, y estoy trabajando para actualizarla.
También eché un vistazo a mi memoria gráfica.
Podemos ver que hubo un pico extraño justo antes de que muriera ES. Estoy tratando de descubrir la fuente, aquí. El único otro proceso debe ser nodo; tienen un límite de 4Gb y 1.2Gb, respectivamente (una vez que ES murió y solo quedó un nodo, la memoria RAM se redujo a 1.2Gb como puede ver). Entonces, o bien ElasticSearch excedió su 4Gb, o algo más causó un aumento en la memoria ...
FWIW, estoy usando m1.large instancias (8GB RAM).
Si ejecuta una versión relativamente nueva de elasticsearch, debería poder encontrar la ubicación de los archivos de registro ejecutando el siguiente comando
curl -s "localhost:9200/_nodes/_local/settings?pretty=true" | fgrep path.logs
Pero si elasticsearch desaparece repentinamente, es probable que no encuentre nada en estos registros. Si está ejecutando una versión anterior de java (de un año o más), es muy posible que el proceso de java se bloquee. Cuando sucede, la JVM generalmente deja archivos con el nombre hs_err_pidXXXX.log
en su disco duro (generalmente en /tmp/
en Linux. Vea si puede encontrar alguno e intente actualizar Java a la versión más reciente.
La segunda razón posible para la repentina desaparición de elasticsearch es oom-killer. Es un proceso que inicia y mata el proceso más grande (elasticsearch en su caso) cuando el sistema se queda sin memoria. Compruebe syslog y kern.log alrededor de la hora en que elasticsearch desapareció la última vez. Si ves mensajes como este
Out of memory: Kill process 1234 (java) score 567 or sacrifice child
es posible que deba reducir el tamaño del montón de elasticsearch para dejar más memoria al sistema operativo o actualizar a una instancia más grande.