我使用的是ElasticSearch 0.90.5。单节点集群并使用Java API进行与节点的所有通信(用于索引和搜索)。
我每隔10分钟就有一连串的文件被送入服务器。使用批量索引API可获得最佳性能。后续查询要么检索单个文档,要么运行More-Like-This查询。
偶尔(有时候经常)我们得到以下异常:
引起:org.elasticsearch.client.transport.NoNodeAvailableException:没有可用节点
我可以向您保证服务器已启动并运行正常。这是我们看到的偶然问题。 NewRelic Server监视器显示盒子本身的压力非常小。在一小段时间内,最高CPU使用率 50%。 ES日志没有向我展示任何有用的东西。在受影响的时间段的日志中没有GC消息。
使用API时是否有其他人遇到此异常。任何见解将不胜感激。
相关堆栈跟踪:
Caused by: org.elasticsearch.client.transport.NoNodeAvailableException: No node available
at org.elasticsearch.client.transport.TransportClientNodesService$RetryListener.onFailure(TransportClientNodesService.java:249)
at org.elasticsearch.action.TransportActionNodeProxy$1.handleException(TransportActionNodeProxy.java:84)
at org.elasticsearch.transport.TransportService$Adapter$2$1.run(TransportService.java:311)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
答案 0 :(得分:1)
您是否可以通过任何机会发布完整的堆栈跟踪?
另外,通过查看elasticsearch留言板(http://elasticsearch-users.115913.n3.nabble.com/)了解类似的例外情况,您可能希望尝试增加client.transport.ping_timeout
并查看是否有帮助