Hadoop节点上负载过高的问题分析

发布时间:2020-05-31 01:17:01 作者:aaabbbbttt
来源:网络 阅读:2003

最近发现我们的hadoop集群的客户端机器负载经常飙到几百,导致机器反应很慢, 客户反应无法提交job,或者job跑的很慢。

针对这种情况通常有几个解决方案,一个是增加客户端机器数量,把他们做到一个pool里面,根据系统负载情况来自动切换不同的客户端机器,也叫负载均衡这个我们已经做到了;一个是找出负载高的根源,因为如此高的负载是很不寻常的表现,通常是因为系统参数不对或者应用程序有bug。

现象

用perf top观察占用最多cpu time的程序,发现大部分是compaction.c这个程序造成的。

可以通过如下命令抓取一分钟的记录看下:

$ sudo perf record -a -g -F 1000 sleep 60

这里借用Brendan Gregg’s的工具 flame graph 分析下抓取的数据。

google查看后了解compaction.c 是与Transparent Huge Pages 相关的一个程序,简称THP,THP是Redhat6 以后出现的功能,目的有两个,一个是整理物理内存的碎片,应用程序在请求内存的时候可以分到2MB的内存(正常是4KB);一个是应用程序分配到的内存不能被交换到swap。

这个特性当然用它的应用场景,但不是任何情况下都是好的,所以要视情况而决定要不要打开此功能。

很明显在系统负载如此高的情况下,大部分cpu time都是在整理内存碎片,因此果断取消此功能。

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag


取消后过了一会就看到了效果,负载下来了,通过打开此功能后负载又上去了,如此问题彻底解决了。


下面介绍另外一种场景,需要打开THP功能的。

某日发现oracle机器的内存几乎被用完,但正常情况下不是这样的,通过cat /proc/meminfo 发现Pagetables 居然有5GB,太离谱了,pagetables 是映射虚拟内存和物理内存地址关系的tables,这些表太多了,通过开启THP,结果pagetables降到了一百多MB的水平。

在实际场景下要看情况对待。


推荐阅读:
  1. HADOOP/HBase动态新增节点
  2. hadoop单节点搭建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

负载 hadoop doop

上一篇:jQuery EasyUI editor扩展,使其支持combo多选下拉列表

下一篇:为什么选择mysql数据库?

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》