HBase Full GC宕机

最近在给HBase集群进行扩容,然而事事不顺:

1.新添加的机器中有一台竟然无故重启,这个问题直接推给了系统部。

2.部署完HDFS和HBase后,启动都没有任何问题,然而过一夜后,HBase节点全部宕掉。

更奇怪的是,以前老集群中的节点没有问题,运行正常,只有新添加的几个节点宕掉,而且HDFS运行也正常(除了机器重启的那个节点)。

于是各种查看日志。

HBase日志显示如下:JVM暂停时间过长,导致无法与zookeeper通信,被zookeeper认为该节点已经宕掉,于是就关闭了该节点。

是不是真的发生了Full GC? 为什么会发生GC,暂停应用呢?老集群中的机器为什么没问题呢?由于对GC理解太浅,于是产生了各种问题,网上也没查到具体答案,只能一点一点查询、理解、梳理。

2015-10-13 23:47:12,295 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 83095ms
GC pool ‘ParNew‘ had collection(s): count=2 time=216ms
GC pool ‘ConcurrentMarkSweep‘ had collection(s): count=2 time=330ms
2015-10-13 23:47:12,295 WARN  [regionserver60020] util.Sleeper: We slept 85995ms instead of 3000ms, this is likely due to a long garbage collecting pause and it‘s usually bad, see http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired
2015-10-13 23:47:12,295 INFO  [regionserver60020-SendThread(zookeeper2:2181)] zookeeper.ClientCnxn: Client session timed out, have not heard from server in 95659ms for sessionid 0x25053f6801406ac, closing socket connection and attempting reconnect
2015-10-13 23:47:12,291 WARN  [regionserver60020.compactionChecker] util.Sleeper: We slept 89894ms instead of 10000ms, this is likely due to a long garbage collecting pause and it‘s usually bad, see http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired
2015-10-13 23:47:12,291 WARN  [regionserver60020.periodicFlusher] util.Sleeper: We slept 89894ms instead of 10000ms, this is likely due to a long garbage collecting pause and it‘s usually bad, see http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired
2015-10-13 23:47:12,291 INFO  [regionserver60020-SendThread(zookeeper3:2181)] zookeeper.ClientCnxn: Client session timed out, have not heard from server in 89644ms for sessionid 0x1505ebc2da3010f, closing socket connection and attempting reconnect
2015-10-13 23:47:12,397 FATAL [regionserver60020] regionserver.HRegionServer: ABORTING region server hregion151,60020,1444732375821: org.apache.hadoop.hbase.YouAreDeadException: Server REPORT rejected; currently processing hregion151,60020,1444732375821 as dead server

在HBase的安装目录下有个gclog.0文件,记录了HBase运行时发生的垃圾回收信息。

但是各种查看后,也没发现什么问题。(或许是对GC不懂的缘故吧,不懂就查、学呗)。

2015-10-13T18:35:47.314+0800: 165.893: [GC [1 CMS-initial-mark: 32523K(63872K)] 35370K(83008K), 0.0185230 secs] [Times: user=0.01 sys=0.02, real=0.01 secs] 
2015-10-13T18:35:47.333+0800: 165.912: [CMS-concurrent-mark-start]
2015-10-13T18:35:47.402+0800: 165.981: [CMS-concurrent-mark: 0.046/0.069 secs] [Times: user=0.32 sys=0.03, real=0.07 secs] 
2015-10-13T18:35:47.402+0800: 165.982: [CMS-concurrent-preclean-start]
2015-10-13T18:35:47.411+0800: 165.990: [CMS-concurrent-preclean: 0.008/0.009 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
2015-10-13T18:35:47.411+0800: 165.990: [CMS-concurrent-abortable-preclean-start]
2015-10-13T18:35:47.414+0800: 165.993: [GC 165.993: [ParNew: 18503K->2112K(19136K), 0.0681050 secs] 51027K->37708K(83008K), 0.0682600 secs] [Times: user=0.03 sys=0.07, real=0.06 secs] 
2015-10-13T18:35:47.535+0800: 166.115: [CMS-concurrent-abortable-preclean: 0.028/0.124 secs] [Times: user=0.15 sys=0.09, real=0.13 secs] 
2015-10-13T18:35:47.536+0800: 166.115: [GC[YG occupancy: 14168 K (19136 K)]166.115: [Rescan (parallel) , 0.0024340 secs]166.117: [weak refs processing, 0.0001320 secs] [1 CMS-remark: 35596K(63872K)] 49765K(83008K), 0.0026970 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] 
2015-10-13T18:35:47.539+0800: 166.118: [CMS-concurrent-sweep-start]
2015-10-13T18:35:47.554+0800: 166.133: [CMS-concurrent-sweep: 0.014/0.015 secs] [Times: user=0.05 sys=0.01, real=0.02 secs] 
2015-10-13T18:35:47.554+0800: 166.133: [CMS-concurrent-reset-start]
2015-10-13T18:35:47.571+0800: 166.151: [GC 166.151: [ParNew: 19077K->2112K(19136K), 0.0028640 secs] 39044K->25755K(83008K), 0.0029990 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]

在查询和学习JVM的垃圾回收时,看到了下面这句话:

对于采用CMS进行旧生代GC的程序而言,尤其要注意GC日志中是否有promotion failed和concurrent mode failure两种状况,当这两种状况出现时可能会触发Full GC。promotion failed是在进行Minor GC时,survivor space放不下、对象只能放入旧生代,而此时旧生代也放不下造成的;

然而在HBase的gclog.0的日志文件结尾发现了promotion failed,日志如下。

2015-10-14T00:55:40.417+0800: 22958.996: [GC 22958.996: [ParNew (promotion failed): 19133K->19116K(19136K), 0.0752040 secs]22959.071: [CMS: 24832559K->11737235K(28395128K), 54.6409350 secs] 24849259K->11737235K(28414264K), [CMS Perm : 48374K->48253K(80800K)], 54.7223900 secs] [Times: user=7.80 sys=1.13, real=54.72 secs] 
2015-10-14T00:56:41.108+0800: 23019.687: [GC 23019.687: [ParNew: 221568K->9684K(249216K), 0.0259720 secs] 11958803K->11746920K(28644352K), 0.0261620 secs] [Times: user=0.29 sys=0.02, real=0.02 secs] 
Heap
 par new generation   total 249216K, used 128841K [0x0000000124e00000, 0x0000000135c60000, 0x0000000135c60000)
  eden space 221568K,  53% used [0x0000000124e00000, 0x000000012c25d198, 0x0000000132660000)
  from space 27648K,  35% used [0x0000000134160000, 0x0000000134ad53b0, 0x0000000135c60000)
  to   space 27648K,   0% used [0x0000000132660000, 0x0000000132660000, 0x0000000134160000)
 concurrent mark-sweep generation total 28395136K, used 11737235K [0x0000000135c60000, 0x00000007fae00000, 0x00000007fae00000)
 concurrent-mark-sweep perm gen total 80800K, used 48566K [0x00000007fae00000, 0x00000007ffce8000, 0x0000000800000000)
时间: 2024-11-05 02:02:32

HBase Full GC宕机的相关文章

【甘道夫】HBase随机宕机事件处理 & JVM GC回顾

一.引言 本文记录了困扰团队两周的HBase随机宕机事件的解决方案,并回顾了JVM GC调优基础知识,供各位参考. 欢迎转载,请注明出处: http://blog.csdn.net/u010967382/article/details/42394031 二.实验环境 16台虚拟机,每台4G内存,1核CPU,400G硬盘 Ubuntu 14.04 LTS (GNU/Linux 3.13.0-29-generic x86_64) CDH5.2.0套装(包括相应版本的Hadoop,HIVE,Hbase

网易视频云:HBase —— RegionServer宕机案件侦查

今天网易视频云技术专家给大家分享一下HBase–RegionServer宕机案件侦查,欢迎参与讨论. 本来静谧的晚上,吃着葡萄干看着球赛,何等惬意.可偏偏一条报警短信如闪电一般打破了夜晚的宁静,线上集群一台RS宕了!于是倏地从床上坐起来,看了看监控,瞬间惊呆了:单台机器的读写吞吐量竟然达到了5w ops/sec!RS宕机是因为这么大的写入量造成的?如果真是这样,它是怎么造成的?如果不是这样,那又是什么原因?各种疑问瞬间从脑子里一一闪过,甭管那么多,先把日志备份一份,再把RS拉起来.接下来还是Bu

RegionServer宕机的原因

HBase集群在运行的时候会出现RegionServer宕机,原因: 网络断开,心跳发送失败,尝试连接其他的zookeeper服务器.(zookeeper会尝试连接其他所有的服务器), 网络恢复了,连接成功,但 session已经过期了,所以 zookeeper 客户端关闭了:当然HMaster也会受到Zookeeper的过期失效信息,产生中断:

技术培训 | RAC 宕机罪犯案情探析之子游标

大家好,我是云和恩墨的李轶楠,不过网上的朋友更习惯叫我600,所以我也慢慢熟悉了这个称呼,其实这个称呼来自于ITPUB论坛上当时我注册的论坛ID"ORA-600",因为这个ID跟Oracle的著名错误号一样,很容易给大家留下深刻印象,所以被我借用了过来,呵呵.这些年通过论坛上认识了很多朋友,也结识了现在与我一起奋战的恩墨小伙伴们. 闲话不多说,我们来看看我们今天要分享的主题吧,这些年我们积累了大量的客户群体,也意味着我们面对着各种复杂的环境与事件,后续我会把我们小伙伴们所遭遇到的各种或

Oracle_RAC宕机和hang分析处理流程

目的:分享一下公司的db故障处理流程,主要是思想.事件描述及影响:2018年9月30日04:43点,zabbix告警odsdb2数据库疑似宕机,机房值班人员通过堡垒机无法登录数据库服务器,从其他机器也无法ssh登录该机器,同时odsdb1数据库也HANG住,通过命令无法登录数据库.根据数据库业务流程图初步分析影响的各业务.(涉及公司业务可忽略) 事件排查:4:46,机房值班人员通知DBA及亦庄值班人员分析情况4:57,按照公司流程在相关群通告故障5:23,值班人员反应数据库服务器已自动重启,但一

Redis架构之防雪崩设计:网站不宕机背后的兵法

Redis架构之防雪崩设计:网站不宕机背后的兵法 原创: 付磊,张益军 高可用架构 2017-03-24 导读:互联网系统中不可避免要大量用到缓存,在缓存的使用过程中,架构师需要注意哪些问题?本文以 Redis 为例,详细探讨了最关键的 3 个问题. 一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存层不命中 存储层不命中,所以不将空结果写回缓存 返

java服务宕机原因查询

背景 在java服务项目上线之后经常会出现宕机的情况 常见原因 内存溢出 1.查到服务进程号 [[email protected] ~]# ps -ef|grep java root 6399 6069 0 08:57 pts/2 00:00:00 grep --color=auto java root 25374 1 0 Oct17 ? 00:21:19 /usr/local/jdk/jre/bin/java -Djava.util.logging.config.file=/home/tomc

clickhouse高可用及节点宕机数据一致性方案

1. 集群节点及服务分配 说明: 1.1. 在每个节点上启动两个clickhouse服务(后面会详细介绍如何操作这一步),一个数据分片,一个数据备份,为了确保宕机数据一致性,数据分片和数据备份不能同一节点,比如gawh201上的shard不能备份在gawh201的replica,如果这样做,当gawh201宕机了,该节点shard的数据是找不到的. 1.2. 基于a所以shard和replica必须错开,但不是随意错开就可以了.按照上图给的规律错开(后面会详细介绍超大节点的集群的shard和re

VmWare平台Windows Server 2012 无响应宕机

我们生产服务器都部署在VMware ESXi 5.5平台上,最近大半年的时间,偶尔就会出现操作系统为Windows Servre 2012的服务器出现没有任何响应(unresponsive)的情况,出现问题的时候,服务器有下面一些现象: 1: 应用程序无法访问SQL Server数据库,使用Microsoft SQL Server Management Sutdio去测试连接数据库,也会返回连接错误. 2: 网络有时候能Ping通,有时候是Ping不通的情况. 3: 远程连接无法访问服务器,从V