转自 http://simonlei.iteye.com/blog/1669992

一共有4个节点的cluster,其中es4 是master,某个时间突然es1脱离了整个cluster,调查过程如下:

[es@bigdata1 logs]$ date; ssh bd4 date

2012年 09月 03日 星期一 09:41:26 CST

2012年 09月 03日 星期一 09:41:00 CST

es4比 es1 慢 26 秒,以下日志时间修改为es1的时间

在es4的日志中:

 写道
[2012-09-01 04:43:52,174][INFO ][cluster.service ] [es4] removed {[es1][VMFIvWAhRQuYoCcPIeedIQ][inet[/192.168.2.11:9300]],}, reason: zen-disco-node_failed([es1][VMFIvWAhRQuYoCcPIeedIQ][inet[/192.168.2.11:9300]]), reason failed to ping, tried [3] times, each with maximum [30s] timeout

这个时候,es4已经重试了3次,每次30s,也就是说90s以前,es1就已经出问题了,也就是42.22秒的时候。这个时间段es1发生了什么?

 写道
[2012-09-01 04:41:07,849][INFO ][monitor.jvm ] [es1] [gc][PS Scavenge][145683][1813] duration [5.9s], collections [1]/[6.5s], total [5.9s]/[46.1m], memory [21.8gb]->[15.7gb]/[23.3gb], all_pools {[Code Cache] [12.3mb]->[12.3mb]/[48mb]}{[PS Eden Space] [6.1gb]->[2.5mb]/[6.5gb]}{[PS Survivor Space] [289.5mb]->[214.6mb]/[820.4mb]}{[PS Old Gen] [15.3gb]->[15.5gb]/[16.2gb]}{[PS Perm Gen] [33.1mb]->[33.1mb]/[82mb]}
[2012-09-01 04:41:31,398][INFO ][monitor.jvm ] [es1] [gc][PS Scavenge][145701][1814] duration [5.8s], collections [1]/[6.5s], total [5.8s]/[46.2m], memory [22gb]->[15.8gb]/[23.3gb], all_pools {[Code Cache] [12.3mb]->[12.3mb]/[48mb]}{[PS Eden Space] [6.2gb]->[932.2kb]/[6.5gb]}{[PS Survivor Space] [214.6mb]->[259.8mb]/[815.8mb]}{[PS Old Gen] [15.5gb]->[15.6gb]/[16.2gb]}{[PS Perm Gen] [33.1mb]->[33.1mb]/[82mb]}
[2012-09-01 04:43:59,621][INFO ][monitor.jvm ] [es1] [gc][PS Scavenge][145745][1817] duration [8.9s], collections [1]/[1.6m], total [8.9s]/[46.5m], memory [22.8gb]->[2.1gb]/[23.3gb], all_pools {[Code Cache] [12.3mb]->[12.3mb]/[48mb]}{[PS Eden Space] [6.5gb]->[53.4kb]/[6.7gb]}{[PS Survivor Space] [318.4mb]->[0b]/[737.2mb]}{[PS Old Gen] [15.9gb]->[2.1gb]/[16.2gb]}{[PS Perm Gen] [33.1mb]->[33.1mb]/[82mb]}
[2012-09-01 04:43:59,621][WARN ][monitor.jvm ] [es1] [gc][PS MarkSweep][145745][14] duration [1.4m], collections [1]/[1.6m], total [1.4m]/[4.9m], memory [22.8gb]->[2.1gb]/[23.3gb], all_pools {[Code Cache] [12.3mb]->[12.3mb]/[48mb]}{[PS Eden Space] [6.5gb]->[53.4kb]/[6.7gb]}{[PS Survivor Space] [318.4mb]->[0b]/[737.2mb]}{[PS Old Gen] [15.9gb]->[2.1gb]/[16.2gb]}{[PS Perm Gen] [33.1mb]->[33.1mb]/[82mb]}
[2012-09-01 04:44:00,795][WARN ][transport.netty ] [es1] Exception caught on netty layer [[id: 0x3b3b2835, /192.168.2.14:55393 => /192.168.2.11:9300]]
java.io.IOException: 断开的管道

这期间,发生了 5.9s、5.8s、8.9s、1.4m的gc动作,特别是最后一个gc,长达1.4分钟,接近90s了。感觉应该正是这个gc导致es1无响应,从而从cluster当中被踢出去了。

很有意思的是,es1发现master es4不在了,它重新选举es3做为master,但是紧接着es3也失效了,日志如下:

 写道
[2012-09-01 04:44:03,756][INFO ][discovery.zen ] [es1] master_left [[es4][uAc5D7jkT_esrUTEBMmATQ][inet[/192.168.2.14:9300]]], reason [do not exists on master, act as master failure]
[2012-09-01 04:44:04,631][INFO ][cluster.service ] [es1] master {new [es3][F4mB4HYkTfu9umD8CSkcnw][inet[/192.168.2.13:9300]], previous [es4][uAc5D7jkT_esrUTEBMmATQ][inet[/192.168.2.14:9300]]}, removed {[es4][uAc5D7jkT_esrUTEBMmATQ][inet[/192.168.2.14:9300]],}, reason: zen-disco-master_failed ([es4][uAc5D7jkT_esrUTEBMmATQ][inet[/192.168.2.14:9300]])
[2012-09-01 04:44:06,782][INFO ][discovery.zen ] [es1] master_left [[es3][F4mB4HYkTfu9umD8CSkcnw][inet[/192.168.2.13:9300]]], reason [no longer master]
[2012-09-01 04:44:06,782][INFO ][cluster.service ] [es1] master {new [es1][VMFIvWAhRQuYoCcPIeedIQ][inet[/192.168.2.11:9300]], previous [es3][F4mB4HYkTfu9umD8CSkcnw][inet[/192.168.2.13:9300]]}, removed {[es3][F4mB4HYkTfu9umD8CSkcnw][inet[/192.168.2.13:9300]],}, reason: zen-disco-master_failed ([es3][F4mB4HYkTfu9umD8CSkcnw][inet[/192.168.2.13:9300]])

我们看一下es3当时发生了什么事情:

[es@bigdata1 logs]$ date; ssh bd3 date

2012年 09月 03日 星期一 09:51:14 CST

2012年 09月 03日 星期一 09:51:11 CST

它们只差3秒,es3的日志如下:

 写道
[2012-09-01 04:43:45,985][INFO ][cluster.service ] [es3] removed {[es1][VMFIvWAhRQuYoCcPIeedIQ][inet[/192.168.2.11:9300]],}, reason: zen-disco-receive(from master [[es4][uAc5D7jkT_esrUTEBMmATQ][inet[/192.168.2.14:9300]]])
[2012-09-01 04:44:12,631][DEBUG][action.admin.indices.status] [es3] [xabindex3][2], node[hLoNg9d0T1GYz1tqUSJwUA], [R], s[INITIALIZING]: Failed to execute [org.elasticsearch.action.admin.indices.status.IndicesStatusRequest@50d8a381]
org.elasticsearch.transport.RemoteTransportException: [es2][inet[/192.168.2.12:9300]][indices/status/s]

奇怪,04:44:06左右,es3啥都没发生,感觉就是es3没理睬es1,因此es1只好又抛弃es3,把自己组建成独立的master。

现象找到了,该怎么解决了。两个思路:

1. 把gc的时间尽量再压缩,哪怕多进行几次gc,每次时间不要太长

2. 修改zen的配置,把fault detection的timeout时间和retry times 都增加。

第一步比较麻烦,还是第二步比较简单,先把retries修改为6试试看。

ElasticSearch 的一次非正常master脱离的调查 (转 和我碰到的情况一模一样)的更多相关文章

  1. Elasticsearch利用cat api快速查看集群状态、内存、磁盘使用情况

    使用场景 当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包 ...

  2. html/css基础篇——DOM中关于脱离文档流的几种情况分析

    所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版中拿走. ...

  3. html/css 关于脱离文档流的几种情况

    所谓的文档流 顾名思义就是按照顺序流下来,指的是html元素从上往下 从左往右的流式排列, 比如说写了5个Div,正常的文档流是依次显示这5个div块: 脱离文档流就是指它所显示的位置和文档代码就不一 ...

  4. elasticsearch的master选举机制

    master作为cluster的灵魂必须要有,还必须要唯一,否则集群就出大问题了.因此master选举在cluster分析中尤为重要.对于这个问题我将分两篇来分析.第一篇也就是本篇,首先会简单说一说m ...

  5. 第05章 管理ElasticSearch

    本章内容 如何选择正确的目录实现,使得ElasticSearch能够以高效的方式访问底层I/O系统. 如何配置发现模块来避免潜在的问题. 如何配置网关模块以适应我们的需求. 恢复模块能带来什么,以及如 ...

  6. ElasticSearch大数据分布式弹性搜索引擎使用

    阅读目录: 背景 安装 查找.下载rpm包 .执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到elasticsearch专属账户测试能否成 ...

  7. ElasticSearch集群配置

    因机器有限,本文只做单机3个节点的集群测试. 1.集群测试信息 elasticsearch版本:elasticsearch-2.4.1 windowns版本:win10 2.解压elasticsear ...

  8. 最完整的Elasticsearch 基础教程

    翻译:潘飞(tinylambda@gmail.com) 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT)        Ela ...

  9. ElasticSearch使用IK中文分词---安装步骤记录

    提示1:必须保证之前的ES中不存在index, 否则ES集群无法启动, 会提示red! 提示2:下载的IK如果太新,会报错 TokenStream被重载Caused by: java.lang.Ver ...

随机推荐

  1. 最受欢迎的iOS第三方SDK

    http://www.raywenderlich.com/forums/viewtopic.php?t=4496

  2. github本地库及clone常用命令

    新建本地库 1. cd d: 2. mkdir git 3. cd git 4. git init 5. git remote add  origin git@github.com:swportal/ ...

  3. 数数字(Digit Counting,ACM/ICPC Danang 2007,UVa1225)

    #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char s[10000]; in ...

  4. python Redis

    Redis非关系型数据库,可以做消息队列功能,可以实现订阅功能,类似于广播,只要订阅道这个频道,发消息的时候,别人可以收到消息,做监控的时候,所有的客户端往一个频道上发消息,server端只有一个监听 ...

  5. xss框架的一些想法

    今天pybeef作为一个课程设计答辩完成了,向老师介绍了很多xss利用相关的场景和技术. 先说一下已经实现了什么, 1, 浏览器版本的判断 这方面只能判断IE和firefox 火狐判断只判断了user ...

  6. CSS中RGBA的兼容方法以及透明度计算方法

    CSS对IE使用背景透明 实现 rgba 效果 height:35px; background: -webkit-gradient(linear,left top,left bottom,from(r ...

  7. 第一百节,JavaScript表达式中的运算符

    JavaScript表达式中的运算符 学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符 7.赋值运算符 8.其他运算符 9.运算符优先级 E ...

  8. 大数据时代之hadoop(三):hadoop数据流(生命周期)

    了解hadoop,首先就需要先了解hadoop的数据流,就像了解servlet的生命周期似的.hadoop是一个分布式存储(hdfs)和分布式计算框架(mapreduce),但是hadoop也有一个很 ...

  9. 《JS权威指南学习总结--第五章语句》

    内容要点: 一.throw语句     所谓异常是当发生了某种异常情况或错误时产生的一个信号.     抛出异常就是用信号通知发生了错误或异常状况.     捕获异常时指处理这个信号,即采取必要的手段 ...

  10. 【LeetCode】423. Reconstruct Original Digits from English

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...