问题现象

每次neo4j启动一段时间后,某个时间点neo4j停了就再也启动不起来了,必须要重新安装Neo4j容器才行。

当无法启动的时候,查看日志只有下面这个提示,过2-3s后就container容器就消失了,docker ps -a 结果是Exits(1),非正常退出。
2023-10-07T08:43:51.768284320Z Changed password for user 'neo4j'. IMPORTANT: this change will only take effect if performed before the database is started for the first time.

问题分析

结合网上的一些资料得到以下结论:
Neo4j容器无法启动是因为在没有停止Neo4j容器的情况下先停止了docker服务,那么后续Neo4j容器就无法启动了。

Neo4j在4以后的版本中增加了一个pid进程管理,在容器的目录/var/lib/neo4j/run下有一个neo4j.pid,如果是异常停止的,那么这个pid还存在,这样就会导致下次启动的时候启动不起来。

解决方案

修改neo4j配置文件,增加这个设置:dbms.directories.run=/run,重启容器即可解决。这个只是将文件换了一个目录,我们可以指定一个mount的目录,这样出现问题后,可以在宿主机上删除该pid文件再重启容器即可。

  • 参考:https://github.com/neo4j/neo4j/issues/12908
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐