美文网首页中间件
es集群data节点blocked for more than

es集群data节点blocked for more than

作者: lockdreamer | 来源:发表于2019-01-23 09:28 被阅读11次

问题描述:

发现主机夯死,重启后,查看系统性能信息,发现跟平常无差异(内存使用率一直在99%)

lockdreamer

查看系统errors日志:

kernel: INFO: task kthreadd:2 blocked for more than 120 seconds.

kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.

lockdreamer

初步确定是脏页缓存过多触发主机pdflush,造成主机夯死。

linux会设置40%的可用内存用来做系统cache,当flush数据时这40%内存中的数据由于和IO同步问题导致超时(120s),所将40%减小到10%,避免超时。

vm.dirty_background_ratio = 10

系统设置:

[root@ly-idc-core-platform-201711131-vm010 log]# sysctl -a|grep dirty

vm.dirty_background_bytes = 0

vm.dirty_background_ratio = 10

vm.dirty_bytes = 0

vm.dirty_expire_centisecs = 3000

vm.dirty_ratio = 20

vm.dirty_writeback_centisecs = 500

1 数据在页缓存中是否超出30秒,如果是,标记为脏页缓存;

2 脏页缓存是否达到工作内存的10%;

3 总内存的最大百分比,系统所能拥有的最大脏页缓存的总量。超过这个值,开启pdflush写入硬盘。如果cache增长快于pdflush,那么整个系统在40%的时候遇到I/O瓶颈,所有的I/O都要等待cache被pdflush进硬盘后才能重新开始。

pdflush的第一件事是读取

/proc/sys/vm/dirty_expire_centiseconds (default 3000)

1/100秒。缓存页里数据的过期时间(旧数据),在下一个周期内被写入硬盘。默认30秒是一个很长的时间。

第二件事是判断内存是否到了要写入硬盘的限额,由参数决定:

/proc/sys/vm/dirty_background_ratio (default 10)

百分值,保留过期页缓存(脏页缓存)的最大值。是以MmeFree+Cached-Mapped的值为基准的

pdflush写入硬盘看两个参数:

1 数据在页缓存中是否超出30秒,如果是,标记为脏页缓存;

2 脏页缓存是否达到工作内存的10%;

以下参数也会影响到pdflush

/proc/sys/vm/dirty_ratio (default 40)

总内存的最大百分比,系统所能拥有的最大脏页缓存的总量。超过这个值,开启pdflush写入硬盘。如果cache增长快于pdflush,那么整个系统在40%的时候遇到I/O瓶颈,所有的I/O都要等待cache被pdflush进硬盘后才能重新开始。

对于有高度写入操作的系统

dirty_background_ratio: 主要调整参数。如果需要把缓存持续的而不是一下子大量的写入硬盘,降低这个值。

dirty_ratio:        第二调整参数。

es相关主机磁盘缓存相关参数

vm.dirty_background_ratio

这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;

vm.dirty_ratio

    该参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。

    把该参数适当调小,原理通(1)类似。如果cached的脏数据所占比例(这里是占MemTotal的比例)超过这个设置,系统会停止所有的应用层的IO写操作,等待刷完数据后恢复IO。所以万一触发了系统的这个操作,对于用户来说影响非常大的。

    sysctl -w vm.dirty_ratio=10

    sysctl -w vm.dirty_background_ratio=5

相关文章

  • es集群data节点blocked for more than

    问题描述: 发现主机夯死,重启后,查看系统性能信息,发现跟平常无差异(内存使用率一直在99%) 查看系统error...

  • elasticsearch 原理

    一.ES简介: 1. 名称解析 ClusterES由个data节点和1个master节点构成ES 集群,ES集群具...

  • blocked for more than 120 second

    日志报错: kernel: INFO: task kthreadd:2 blocked for more than...

  • 31401 blocked for more than 120

    现象 前不久在生产环境上遇到的一个问题,DBA反馈说,入库业务有积压,集群的某个节点,ssh登录都非常卡顿。 分析...

  • elasticsearch8.4.3集群部署

    一、搭建es集群 1、前置操作 如果已有单节点es,想要将其转换升级为集群,必须要删除/data下的node数据,...

  • 节点回来shard仍然delayed原因

    1:es2 fetch shard data时,存在节点刚加入集群,还没有收到cluster metadata的情...

  • ES 安全

    为集群设置密码 设置ES 启动ES,集群名为esclu,数据目录为node0_data,启用xpack.secur...

  • 听见爱的声音

    Love is more thicker than forget More thinner than recall...

  • es脑裂问题

    概述: 一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点所以无...

  • 95_es生产集群部署之部署3个ES 5.5节点以及zen di

    95_es生产集群部署之部署3个ES 5.5节点以及zen discovery集群发现机制 生产环境集群部署 一点...

网友评论

    本文标题:es集群data节点blocked for more than

    本文链接:https://www.haomeiwen.com/subject/nhodjqtx.html