问题描述
我正在尝试确定elasticsearch实例是否正在运行,但它似乎不是:
ubuntu@ubuntu:~$ sudo service elasticsearch status
* elasticsearch is not running
ubuntu@ubuntu:~$ sudo service elasticsearch start
* Starting Elasticsearch Server [ OK ]
ubuntu@ubuntu:~$ sudo service elasticsearch status
* elasticsearch is not running
and
ubuntu@ubuntu:~$ sudo /etc/init.d/elasticsearch status
* elasticsearch is not running
ubuntu@ubuntu:~$ sudo /etc/init.d/elasticsearch start
* Starting Elasticsearch Server [ OK ]
ubuntu@ubuntu:~$ sudo /etc/init.d/elasticsearch status
* elasticsearch is not running
ubuntu@ubuntu:/etc/elasticsearch# sudo service elasticsearch restart
* Stopping Elasticsearch Server [ OK ]
* Starting Elasticsearch Server [ OK ]
ubuntu@ubuntu:/etc/elasticsearch# sudo service elasticsearch status
* elasticsearch is not running
和
ubuntu@ubuntu:~$ curl -XGET localhost:9200/_nodes/_all/process?pretty
curl: (7) Failed to connect to localhost port 9200: Connection refused
和
ubuntu@ubuntu:/etc/elasticsearch$ sudo netstat -nlp
tcp6 0 0 :::9300 :::* LISTEN 4413/java
UPD
我的elasticsearch.log:
[2014-12-03 00:00:02,161][INFO ][cluster.metadata ] [Zero] [logstash-2014.12.03] creating index, cause [auto(bulk api)], shards [5]/[1], mappings [_default_]
[2014-12-03 00:00:02,617][INFO ][cluster.metadata ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:12,737][INFO ][cluster.metadata ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:17,587][INFO ][cluster.metadata ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:18,842][INFO ][cluster.metadata ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 01:00:01,430][INFO ][cluster.metadata ] [Zero] [logstash-2014.11.25] deleting index
[2014-12-03 09:46:57,461][INFO ][cluster.metadata ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
最佳解决办法
Elasticsearch service init脚本在启动失败时不会在控制台或日志文件上打印任何错误信息,而是可笑地显示[OK]
。
您必须使用与init脚本执行的相同用户和相同参数手动运行elaticsearch以检查出现了什么问题。错误消息将打印在控制台上。
在安装了elasticsearch-1.4.1.deb的Ubuntu 14.10上,没有更改任何路径,运行elastisearch的命令是:
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --default.config=/etc/elasticsearch/elasticsearch.yml --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch
我刚刚在/etc/init.d/elasticsearch
中添加了一行来打印出上面的命令:
# Start Daemon
log_daemon_msg "sudo -u $ES_USER $DAEMON $DAEMON_OPTS" # <-- Add this line
start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
log_end_msg $?
次佳解决办法
elasticsearch用户无法写入PID文件,因为它无权在/var /run /中创建文件:
FileNotFoundException[/var/run/elasticsearch.pid (Keine Berechtigung)]
修复:创建目录/var /run /elasticsearch /,将其所有权更改为elasticsearch:elasticsearch,并在init脚本中将PID文件位置更改为此目录。
mkdir -p /var/run/elasticsearch
chown elasticsearch: /var/run/elasticsearch
sed -e 's|^PID_FILE=.*$|PID_FILE=/var/run/$NAME/$NAME.pid|g' -i /etc/init.d/elasticsearch
一旦你走得那么远,这是你可能会看到的下一个错误:
ElasticsearchIllegalStateException[Failed to obtain node lock, is the following location writable?: [/var/lib/elasticsearch/elasticsearch]]
资源再次没有为elasticsearch用户提供正确的权限。
chown -R elasticsearch: /var/lib/elasticsearch
还没做完。现在你必须编辑/etc/init.d/elasticsearch并删除这一行:
test "$START_DAEMON" == true || exit 0
这条线是完全垃圾,保证会退出。
现在它应该终于开始了。
第三种解决办法
If you are using Elasticsearch 5.0.
现在,Elasticsearch 5.0的最小/最大堆大小要求默认为2gb
检查ls /tmp/hs_err_pid*.log
文件,在日志中,您将看到JVM因内存不足而无法启动ES。
您可以在/etc/elasticsearch/jvm.options
中调整堆大小设置。如果您使用的是2 GB RAM的盒子,请分别将线路-Xms2g
和-Xmx2g
调整为-Xms1g
和-Xmx1g
。如果您打算使用1 GB RAM的盒子,我建议您使用-Xms512m
和-Xmx512m.
第四种办法
虽然接受的答案命令对我来说使用Elasticsearch 1.7.3,但在Elasticsearch> 2.0中进行一些更改,运行接受的答案命令会产生
es.default.config is no longer supported. elasticsearch.yml
must be placed in the config directory and cannot be renamed
上面Github问题中指定的命令现在是:
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --path.conf=/etc/elasticsearch --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch
第五种办法
今天早上我遇到了同样的问题。经过大量挖掘,我们发现它是由Java 8安装失败引起的。 Java 8安装修复后,一切都很好。