要不要再翻翻文档呢?
logstash5.0

logstash5.0

ES节点memory lock重要性与实现方式

Elasticsearchzaqweb 发表了文章 • 3 个评论 • 25785 次浏览 • 2017-04-06 11:55 • 来自相关话题

看一下Elastic官网对开启 bootstrap.memory_lock的介绍:   Swapping is very bad for performance and for node stability and should be avoided at all costs. It can cause garbage collections to last for minutes instead of milliseconds and can cause nodes to respond slowly or even to disconnect from the cluster.                                                                   ----截取自官网

意思是说发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。                                                                      ----如果不了解到底什么是swapping的,可以找点Linux IO章节文章看看

  1. 先检查一下你的各个ES节点是否开启了Mem_lock

GET 请求 /_nodes?filter_path=**.mlockall

{   "nodes": {     "dCH5FCpATRO7D1azyPhsRQ": {       "process": {         "mlockall": false       }     },     "GoNfwnNzSwmJy3y1QdfluA": {       "process": {         "mlockall": false       }     },     "ijW61kA-SAqnnVHjpTSw2w": {       "process": {         "mlockall": false       }     },     "yHl9GUGbS46o4hwKvHpwnQ": {       "process": {         "mlockall": false       }     }   } }

上述返回内容,可见都没有开启mem_lock,集全随时都可能发生故障(尤其是集群正常运行了一段时间,莫名其妙的故障)   2. root权限执行ulimit -l unlimited

告诉操作系统可以无限制分配内存给一个进程

3.重新启动ES

[2017-04-06T11:51:14,840][INFO ][o.e.b.BootstrapCheck     ] [Portal_ES_Node10_0_36_49] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked

  4. 如果你遇到上面的错误,说明你还需要配置/etc/security/limits.conf     增加下面3行到文件末尾,其中XXX表示当前用户

# allow user 'XXX' mlockall XXX soft memlock unlimited XXX hard memlock unlimited

Logstash5.0.X离线安装插件报错,仍然提示无法联网

Logstashtzwgod 回复了问题 • 3 人关注 • 2 个回复 • 8706 次浏览 • 2016-12-16 15:20 • 来自相关话题

Logstash5.0.X离线安装插件报错,仍然提示无法联网

回复

Logstashtzwgod 回复了问题 • 3 人关注 • 2 个回复 • 8706 次浏览 • 2016-12-16 15:20 • 来自相关话题

ES节点memory lock重要性与实现方式

Elasticsearchzaqweb 发表了文章 • 3 个评论 • 25785 次浏览 • 2017-04-06 11:55 • 来自相关话题

看一下Elastic官网对开启 bootstrap.memory_lock的介绍:   Swapping is very bad for performance and for node stability and should be avoided at all costs. It can cause garbage collections to last for minutes instead of milliseconds and can cause nodes to respond slowly or even to disconnect from the cluster.                                                                   ----截取自官网

意思是说发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。                                                                      ----如果不了解到底什么是swapping的,可以找点Linux IO章节文章看看

  1. 先检查一下你的各个ES节点是否开启了Mem_lock

GET 请求 /_nodes?filter_path=**.mlockall

{   "nodes": {     "dCH5FCpATRO7D1azyPhsRQ": {       "process": {         "mlockall": false       }     },     "GoNfwnNzSwmJy3y1QdfluA": {       "process": {         "mlockall": false       }     },     "ijW61kA-SAqnnVHjpTSw2w": {       "process": {         "mlockall": false       }     },     "yHl9GUGbS46o4hwKvHpwnQ": {       "process": {         "mlockall": false       }     }   } }

上述返回内容,可见都没有开启mem_lock,集全随时都可能发生故障(尤其是集群正常运行了一段时间,莫名其妙的故障)   2. root权限执行ulimit -l unlimited

告诉操作系统可以无限制分配内存给一个进程

3.重新启动ES

[2017-04-06T11:51:14,840][INFO ][o.e.b.BootstrapCheck     ] [Portal_ES_Node10_0_36_49] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked

  4. 如果你遇到上面的错误,说明你还需要配置/etc/security/limits.conf     增加下面3行到文件末尾,其中XXX表示当前用户

# allow user 'XXX' mlockall XXX soft memlock unlimited XXX hard memlock unlimited