线上Elastcisearch遇到的问题 org.elasticsearch.transport.ReceiveTimeoutTransportException

记录

本着使用ES能够快速方便的获取数据,线下搜索模块使用了ES,结果一直报错:

 

org.elasticsearch.transport.ReceiveTimeoutTransportException: [][10.2.2.121:9200][cluster:monitor/nodes/liveness] request_id [5814] timed out after [5000ms]

    at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:698)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{10.2.2.121}{10.2.2.121:9200}]

 

翻译下说是找不到可用的节点,查阅各种原因:

1、首先我们有三个环境,开发,测试,预生产,这些都是没问题的,怀疑是生产环境的问题,因为代码是没问题的。其实这里从一开始定查找问题的方向就错了。一开始应该是先看生产的配置文件,可是太过自信了。是个坑。

1、开始怀疑是环境的问题

1.1、查看ES的安装环境

1.2、JDK环境,java -version,翻过一篇帖子有说是关于版本的问题,看了下其他环境的,相差不大,都是1.8jdk版本。

1.3、怀疑是ES服务端启动多个的问题,使用linux命令查看:ps aux | grep elasticsearch,结果没有问题,只启动了一个

1.4、ES里面的客户端连接和服务端连接不是交给ES服务端去控制的,而且将这种连接委托给操作系统,说是默认keepalive这个会返回给客户端,具体我不是很明白,因为是英文帖子,翻译看不懂,只知道说要去更改keepalive的存活时间,也就是更改Linux的内核

网址这里:https://blog.trifork.com/2015/04/08/dealing-with-nodenotavailableexceptions-in-elasticsearch/comment-page-1/

1.5、更改之后,依旧报错,不是这个的问题,之后查看Linux的内存,说是内存不足也会导致这个问题,free -h,发现内存充足

1.6、怀疑到这里,基本上环境那边都不知道要去看哪里了。从安装路径,启动配置,包括linux的配置这些,都查了个遍,没有问题。

这时候,突然我翻到一篇帖子,就三个处理结果,导致我去仔仔细细看了生产的配置环境

https://blog.csdn.net/u013401685/article/details/17931041

帖子就写了三个问题:1、端口不对,2、jar包冲突,3、集群名字。

之后发现,端口写错了。程序之间jar包的通讯是通过9300来连接的。而9200是作为Http协议去连接的。ES集群之间的通讯也是通过9300去连接的。

 

9200是应用于这里:

9300是应用于这里:

怎么说,就是粗心大意导致的很多问题,还是不够细心,记录之。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值