背景:
在一次测试环境图库新增节点属性的需求后,再重启图库,其他操作都正常运行,但是在新建lucene索引时,图库卡住,在前端页面尝试,页面一直在转圈,在shell端执行直接卡住不动,此时通过neo4j stop命令已经无法停止图库,只能强制杀死服务
解决步骤:
- 查看图库日志,并没有报错和异常信息,后重启图库,并重新导入数据,再新建lucene索引依旧不行
- 怀疑是图库配置的问题,后把测试环境的图库配置按照线上配置进行比对并修改,再重启图库,此问题依然存在,后将线上图库目录原封不动的scp到测试环境,重试以上步骤,仍没有解决问题
- 在重试的过程中,已经发现每次执行创建lucene索引时,其index文件一开始是有更新的,但是执行段时间后就会终止更新
- 查看图库内存和cpu占用情况,并没有发现异常,所以排出内存和cpu的问题
- 开始怀疑是该服务器的环境问题,为了验证是环境问题导致,在etl02安装了一个图库程序,并把测试环境的目录scp到etl02,经过上述步骤,最终新建lucene索引是可以成功的,故可以基本判定是该服务器的环境导致
- 开始比对该服务器和线上服务器的环境,除了jdk有小版本的变动,其他没有发现异常,为了保持变量的一致性,还是更换了测试环境的jdk,但是最终问题还是没有解决
- 为了不影响依赖测试环境图库的程序,向op申请了一台测试环境的服务器,并在上面安装了两个图库服务,后导入数据并重启,此时新建lucene索引是可以成功的
- 后发现在客户端shell执行建lucene索引命令(数据量小是可以成功的),客户端shell卡死,无法退出,只能通过强制重启服务解决问题
然后复现该问题,查看进程的堆栈信息,如下
很明显进程被卡住 - 后通过该日志信息查阅资料,发现了类似的问题,考虑可能是挂载的NFS异常导致
详情见:https://jira.atlassian.com/browse/JRASERVER-72195 - 查看磁盘信息,df -h,发现也被卡住, 故查看是在哪里卡住了strace df -h
- 找到卡住的路径,项OP同学询问,让其帮忙将该挂载umount,df -h卡住问题解决
- 再重新重启图库,新建lucene索引成功,问题解决
问题原因:
在创建lucene索引时,会遍历所有挂载的NFS以检查其属性,如果Linux 服务器中的 NFS 挂载损坏(陈旧、挂起或无法访问),那么任何与 Lucene 索引相关的功能都可能因此而中断,所以OP 同学在重构50所在服务器环境的时候导致图库所在服务器挂载的远程文件不存在了,因此在创建索引才会卡住,df -h卡住也是这个问题