服务器重新安装了系统,所有工作都要重新来过。之前没意识到要装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命令检查结果如下:
Elasticsearch-Starting-Failed.png
错误代码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

最后修改:2021 年 01 月 29 日 04 : 48 PM
如果觉得我的文章对你有用,请随意赞赏