HBase RegionServer Pause for hours 卡顿几小时 故障
关键词:hbase jvm gc regionserver wal pause
背景:
HBase 1.1.2
客户的hbase集群最近出现RegionServer宕机情况。跟踪了master和RS日志发现,RS端抛出在做wal flush的时候,找不到 /apps/hbase/data/WALs/host,16020,timestamp 这个目录,由Parent directory doesn't exist 导致了 cannot get log writer,从而 RS abort。
master日志发现,找不到的那个log文件在上午11点的时候 被archive到oldWALs里,而且注意rs的wal目录带有splitting后缀。
-- ::, INFO [main-EventThread] wal.WALSplitter: Archived processed log hdfs://wgzx/apps/hbase/data/WALs/hdp034.wgzx,16020,1494436736930-splitting/hdp034.wgzx%2C16020%2C1494436736930.default.1497667888987 to hdfs://wgzx/apps/hbase/data/oldWALs/hdp034.wgzx%2C16020%2C1494436736930.default.1497667888987
-- ::, DEBUG [hdp013.wgzx,,1494436739211_ChoreService_1] master.ReplicationLogCleaner: Didnt find this log in ZK, deleting: hdp034.wgzx%2C16020%2C1494436736930.default.
rs日志发现11点到16点中间没有日志,卡在了jvm pause,16点后开始flush11点被master delete的日志,宕机。


分析:
基本可以确定RegionServer就是不知为何卡住(不能确定是full gc),被stop-the-world了,然后master得不到RS的响应,以为它挂了,于是开始rename其WAL directory,做log split。(splitting后缀表示log split,表示master认为rs挂了) 然后rs起来打算继续11点时pause的工作,结果wal目录都没了,宕机。
卡顿几小时,而且printGCDetails的正常的gc日志也没打出来,让我们十分怀疑是不是真的是因为gc引起的,因为20g堆内+20g堆外也不算很大,就算gc性能再低,也不至于卡几小时。咨询了几位外部专家,表示都怀疑可能是遇到系统内核或jvm的bug了。但/var/log/message下异常当天没发现异常日志。
系统内核在CentOS 6.6 有个内核版本的bug,会导致进程卡死 : https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64 。但我们的是 Cent 6.7,在列表里明确表示是解决了这个bug的。
目前暂无法得知原因,而且在这个集群的HBase貌似是会偶尔出现这种情况,不止一台机器。我们内部集群HBase配置基本一样,反而没遇到过这类问题。
后续更新:
后来运维自己发现自己由于年初某一次故障,写了个定时去对regionServer做jmap的脚本(而且间隔时间据说只有分钟级)。把这个脚本去掉后貌似持续了半个多月再也没发生过问题。。。虽然jmap会触发fullGC,但是讲道理也不应该出现卡这么久,不知道是不是人为触发STW太频繁导致JVM产生了什么bug。
HBase RegionServer Pause for hours 卡顿几小时 故障的更多相关文章
- 解决由于显卡驱动BUG导致桌面右键卡顿的问题:bat文件源码
@ ECHO OFF%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...
- 一次spark卡顿分析
在104上面执行,经常会发生卡到了如下一句话: storage.BlockManagerInfo: Added broadcast_8_piece0 当再次卡顿的时候,我直接退出,然后通过yarn看后 ...
- 使用WaveOut API播放WAV音频文件(解决卡顿)
虽然waveout已经过时,但是其api简单,有些时候也还是需要用到. 其实还是自己上msdn查阅相应api最靠谱,waveout也有提供暂停.设置音量等接口的,这里给个链接,需要的可以自己查找: h ...
- xamarin MasterDetailPage点击Master时卡顿现象
在很多项目中经常会使用到MasterDetailPage的布局方式,而且一般做为主页面来开发,在开发中,发现一个并不算Bug的问题,但是却发生了,以此记录下来,方便大家探讨. 现象是这样的,我开发了一 ...
- UITableView cell复用出错问题 页面滑动卡顿问题 & 各杂七杂八问题
UITableView 的cell 复用机制节省了内存,但是有时对于多变的自定义cell,重用时会出现界面出错(例如复用出错,出现cell混乱重影).滑动卡顿等问题,这里只简单敲下几点复用出错时的解决 ...
- 解决UINavigationController在pushViewController时出现的"卡顿"问题
进行开发中,遇到了个小问题: 在使用UINavigationController的-pushViewController:animated:执行入栈一个子控制器操作时(即最新栈顶子控制器),会出现推出 ...
- webstorm卡顿问题
近期随着项目开展,文件逐渐增大,webstrom频繁出现卡顿,而且时有崩溃现象,提示没有足够的内存来执行请求的操作,需要增加Xms设置. 解决办法: 1.找到WebStorm.exe.vmoption ...
- CSS3 速移动效果动画流畅无卡顿
js或jquery 元素移动以像素计算,手机上移动效果会有卡顿 利用CSS3 可以很简单的实现流畅的移动动画 transform: translate3d(66px, 88px, 0px) rotat ...
- 第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash
1. UIImage imageWithContentsOfFile卡顿 [[UIImage alloc] initWithContentsOfFile 卡顿 2.uitableview scroll ...
随机推荐
- CMDB服务器管理系统【s5day89】:采集资产之汇报信息
1.服务器端收到的数据和客户端的数据不一样 print(request.post) 少发了,还是少取了,说明根本没有把数据全发过来 print(request.body) 1.只把字典的key给我发过 ...
- DirectX11 With Windows SDK--19 模型加载:obj格式的读取及使用二进制文件提升读取效率
前言 一个模型通常是由三个部分组成:网格.纹理.材质.在一开始的时候,我们是通过Geometry类来生成简单几何体的网格.但现在我们需要寻找合适的方式去表述一个复杂的网格,而且包含网格的文件类型多种多 ...
- react实战项目开发(1) 搭建react开发环境初始化项目(Create-react-app)
前言 Create React App npm install -g create-react-app create-react-app my-app cd my-app npm start 执行命令 ...
- 滚动锚定(Scroll Anchoring)- 让视口内容不再因视口上方 DOM 元素的高度变化而产生跳动
不知道你有没有经历过这样的场景:当你打开一张“多图杀猫”的页面后,正一张图一张图边滚边看,在你刚准备定睛看某一张图的时候,这张图突然被它上面的内容挤到了视口下方,然后你赶紧把滚动条往下拉,试图追赶这张 ...
- 使用VS的生成事件命令行指令将生成的exe,dll文件复制到指定文件夹中
VS预生成事件命令行 和 生成后事件命令行 宏说明 $(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir) ...
- TCP/IP教程
一.TCP/IP 简介 TCP/IP 是用于因特网的通信协议. 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信. 什么是 TCP/IP? TCP/IP 是供已连接因特 ...
- Arduino-接口图
Arduino开发板上数字输入输出引脚中的3.5.6.9和11都提供0V和5V之外的可变输出.在这些引脚的旁边,会标有PWM——脉冲宽度调制,PWM是英文“Pulse Width Modulation ...
- 牛牛与数组 (简单dp)
题目链接 这种题一看就是dp啊,dp[i][j]表示第i位放j的方案数,转移方程为dp[i][j]=dp[i-1][k]{k<=i||k%i!=0},当然我们可以三层循环来找,但数据显然会超时, ...
- Java的三大特性
一.封装性 含义:对外不可见,保护属性和方法不被外部多看见 实现:通过关键字private声明,用get.set方法为外部访问. 引用的传递: static关键字:修饰属性(全局属性):修饰方法(直接 ...
- 在GridView中使用FindControl
DataRowView dv =(DataRowView)e.Row.DataItem;string id=dv.Row["ProjectID"].ToString(); 1.在行 ...