四川建设工程交易信息网站,专业网站设计企业,学生做的网站成品,wordpress the7 theme问题现象 在zabbix系统中#xff0c;对Hadoop集群的历史监控数据分析时#xff0c;发现在执行大Job任务时#xff0c;某些服务节点的cpu sys态很高#xff1b;具体以hadoop_A服务节点为例#xff0c;在10:15-10:40这个时间段#xff0c;cpu user态为60%#xff0c;而sys… 问题现象 在zabbix系统中对Hadoop集群的历史监控数据分析时发现在执行大Job任务时某些服务节点的cpu sys态很高具体以hadoop_A服务节点为例在10:15-10:40这个时间段cpu user态为60%而sys态则高达35%对于整个Hadoop集群并不是所有的节点都会出现sys过高的问题产生此类问题的都是部署CentOS6系统的节点。定位分析 1. 根据zabbix系统中cpu sys很高的问题发生时间找到触发问题的大Job以便于后面的问题重现和问题验证 2. 对问题节点hadoop_A的硬件信息和OS系统日志/var/log/messages进行初步检查并未发现异常 3. 重启Job重现问题。并使用nmon工具对问题节点hadoop_A的资源负载进行粗粒度的实时监测 4. 通过上图注意到网络流量达到了119.7MB/s接收和发送的峰值都超过了120MB/s初步怀疑网口在某一时间成为瓶颈导致内核的sys过高。对hadoop_A的网口计数器细化分析系统在uptime了83天的状态下网口计数器中除overruns指标达22万之外其他的网络指标正常。 这说明网络确实曾达到过峰值也丢过包但频率非常低sys过高的问题应该不是网络负载过高触发。 5. 需要对系统进行更细粒度的分析找出系统sys态消耗在什么地方。在hadoop_A节点上部署perf工具通过perf top对kernel事件采样实时分析内核事件。 通过perf top监控可以断定kernel中存在频繁的spin_lock_irqsave内核系统调用, sys态消耗过高应该与此有关。 6. 重启Job再次重现问题并利用perf工具对内核函数的调用关系采样 perf record -a -g -F 1000 sleep 30 采样结束后在当前目录上会生成一个perf.data文件使用perf工具查看函数调用关系 perf report -g 7. 通过调用依赖关系分析spin_lock_irqsave主要called by compaction_alloc初步推测问题由kernel的内存管理部分触发。联想到centos 6相对于centos 5在kernel内存管理模块的一些改进点如transparent huge page, 基于numa的内存分配等有没有可能是CentOS6新增的THP特性导致cpu sys过高再在google上搜一把相关函数名的关键字印证这个猜测。 问题验证 1. 选择在节点hadoop_A上面做验证测试通过以下内核参数优化关闭系统THP特性: echo never /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never /sys/kernel/mm/redhat_transparent_hugepage/defrag2. 重启触发问题的大Job在hadoop_A节点未出现cpu sys 状态过高的现象。 3. 在生产系统上运行24小时后通过zabbix系统观察其他内核未优化节点如hadoop_B,hadoop_C等节点依然存在cpu sys态过高的问题而关闭了THP特性的hadoop_A节点没有出现cpu sys态过高的问题验证了之前的分析。 结论 将 Hadoop 集群中所有 CentOS6 类型节点的 THP 特性关闭掉 (在 CentOS6 中THP特性默认都是打开的)关闭方法如下 echo never /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never /sys/kernel/mm/redhat_transparent_hugepage/defrag值得注意的是需要在 puppet 系统中部署该项优化以免节点重启导致修改丢失。 参考 事后在redhat官网和cloudera官网也搜到了相关的内容附录下来供参考。 在 RedHat 的官网上有对 THP 特性的细化说明 https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-transhuge.html在 Cloudera 的 CDH4 部署说明中也建议将系统的 THP的 compaction 特性关闭 http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.2/CDH4-Installation-Guide/cdh4ig_topic_11_6.html