2023年3月17日更新
今天终于又把Elasticsearch升级到了7.10.2,结果又出现超时现象。因为服务器已经小小地升级过一次,所以这次超时完全就是因为时间设置的问题。
# systemctl show elasticsearch | grep ^Timeout
TimeoutStartUSec=1min 15s
TimeoutStopUSec=0
1分15秒后就超时,感觉是有点悬。按下面方法修改为300秒,问题解决。
2021年1月29日原文
服务器重新安装了系统,所有工作都要重新来过。之前没意识到要装Elasticsearch服务,直到有人问起CirrusSearch的问题,我才想起我竟然都没安装这个服务。
按照我之前的文章《为MediaWiki安装高级搜索(AdvancedSearch)插件》中的方法,一路都很顺利,安装也成功了,但是启动服务会失败。
Job for elasticsearch.service failed because a timeout was exceeded. See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
用systemctl status elasticsearch.service
命令检查结果如下:
错误代码143。用journalctl -xe
检查的结果,主要错误如下:
Jan 29 16:04:49 mindseed systemd[1]: elasticsearch.service start operation timed out. Terminating.
Jan 29 16:05:01 mindseed systemd[1]: Failed to start Elasticsearch.
在网上查了一圈,各种说法都有,修改超时时间的:
sudo systemctl edit --full elasticsearch.service
然后将其中的TimeoutStartSec值改为900,但是没用。
还有将143作为成功退出的代码,源配置本来就已经设置好了。还有其他一堆乱七八糟的,总之我试了一圈都没成功,也就不一一列举了。
无意中翻到一个回答,提到了elasticsearch可能失败的原因——没有足够的内存让服务运行。
作为JVM应用程序,Elasticsearch主服务器进程仅利用专用于JVM的内存。所需的内存可能取决于所使用的JVM(32位或64位)。
sudo vim /etc/elasticsearch/jvm.options
找到Xms行如下:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
按照文章中的内容,-Xms和-Xmx的值不应该超过服务器物理内存的50%,很显然是我那只有1G内存的服务器拖了后腿。将值改为128m后重新启动服务,终于成功了。
参考文章
Elasticsearch: Job for elasticsearch.service failed
How to prevent systemd service start operation from timing out