Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 932|回复: 0

Elasticsearch 常见问题汇总及解决姿势(后续会持续更新)

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 803 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726482
    发表于 2021-7-4 16:10:31 | 显示全部楼层 |阅读模式

     

    1、集群存储资源高水位 异常

    Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=cluster_block_exception, reason=blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]
            at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177)
            at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:653)
            at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:628)
            at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:535)
            at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:508)
            at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:348)
            at com.cy.es.connection.ClientProxy.index(ClientProxy.java:118)
            at com.cy.es.connection.CyESClient.index(CyESClient.java:91)
            at 

    当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包括磁盘,heap,ram的使用情况,先做初步判断。

    查看集群资源使用情况

    get /_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used_percent,heap.current,heap.percent,heap.max,ram.current,ram.percent,ram.max,master 

    eg:

    localhost:9200/_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used_percent,heap.current,heap.percent,heap.max,ram.current,ram.percent,ram.max,master 

     返回:

    http          version jdk       disk.total disk.used disk.avail disk.used_percent heap.current heap.percent heap.max ram.current ram.percent ram.max master
    10.0.0.4:9200 6.3.1   1.8.0_181       29gb     3.3gb     25.6gb             11.72        254mb            7    3.3gb       6.2gb          92   6.8gb -
    10.0.0.5:9200 6.3.1   1.8.0_181       29gb     3.3gb     25.6gb             11.71      195.5mb            5    3.3gb       6.2gb          91   6.8gb -
    10.0.0.6:9200 6.3.1   1.8.0_181       29gb     3.4gb     25.6gb             11.74      293.6mb            8    3.3gb       6.2gb          92   6.8gb *

    此处的disk占用,heap使用量等都是监测集群状态的关键参数,更多参数可以官网cat node api参考此处。

    说明: 磁盘空间大于95%时,es会启动保护机制,设置成只读模式,导致es自动关闭了索引的写功能,只能进行读取或者删除。

     

    需要手动扩容或者删除没必要数据;集群正常后,需要对指定索引执行如下命令

    PUT /index/_settings 
    
    { 
      "index.blocks.read_only_allow_delete": null 
    }

    或者:

    PUT /index/_settings 
    
    
    {
      "index": {
        "blocks": {
          "read_only_allow_delete": "false"
        }
      }
    }

     

     全部索引:

    PUT /*/_settings 
    
    { 
      "index.blocks.read_only_allow_delete": null 
    }

    或者

    PUT _settings
    
    
    {
      "index": {
        "blocks": {
          "read_only_allow_delete": "false"
        }
      }
    }

     

    全部索引: 

    指定索引: 

    一旦在存储超过95%的磁盘中的节点上分配了一个或多个分片的任何索引,该索引将被强制进入只读模式,所以新产生的日志不能入库,也不能清除。

    2、系统资源配置问题

    问题:

    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]


    解决办法:
    1. 修改配置sysctl.conf

    sudo vi /etc/sysctl.conf 


    添加如下配置:

    vm.max_map_count=655360


    执行命令:

    sudo sysctl -p


    重新启动elasticsearch,即可启动成功。

    =====================================================

    问题:

    max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

     原因:普通用户执行问题
     解决:切换到root用户,编辑

    /etc/security/limits.conf  

    添加,重启永久生效

     # (elasticsearch 是用户名)
     elasticsearch hard nofile 65536  
     elasticsearch soft nofile 65536    
    
    

    =====================================================

     问题:

    max number of threads [1024] for user [elk] is too low, increase to at least [2048]

    原因:普通用户执行操作数低
    解决:切换到root用户,进入limits.d目录下修改配置文件。

    vi /etc/security/limits.d/90-nproc.conf

    修改如下内容:

    * soft nproc 1024

    #修改为

    * soft nproc 2048

    或者

    切换到root用户,编辑limits.conf 添加类似如下内容

    vi /etc/security/limits.conf

    添加如下内容:(针对所有用户生效)

    * soft nofile 65536
    
    * hard nofile 131072
    
    * soft nproc 2048
    
    * hard nproc 4096

    要重新登录生效

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-21 20:28 , Processed in 1.984221 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表