ElasticSearch实战系列十一: ElasticSearch错误问题解决方案 r囧r小猫 2022-10-22 07:44 565阅读 0赞 ## 前言 ## 本文主要介绍ElasticSearch在使用过程中出现的各种问题解决思路和办法。 ## ElasticSearch环境安装问题 ## ### 1,max virtual memory areas vm.max\_map\_count \[65530\] is too low, increase to at least \[262144\] ### 原因: 内存限制太小了! 解决办法: 修改最大内存限制! 修改sysctl.conf文件 vim /etc/sysctl.conf 在末尾增加如下配置: vm.max_map_count = 655360 vm.swappiness=1 然后保存退出,输入以下命令使其生效 sysctl -p 使用命令查看: tail -3 /etc/sysctl.conf 图片示例: ![在这里插入图片描述][20210524213844920.png] ### 2,max number of threads \[2048\] for user \[elastic\] is too low, increase to at least \[4096\] ### 原因: 线程数限制太少了! 解决办法: 修改最大线程数限制! 修改90-nproc.conf文件 vim /etc/security/limits.d/90-nproc.conf **注:不同的linux服务器90-nproc.conf可能文件名不一样,建议先在/etc/security/limits.d/查看文件名确认之后再来进行更改。** 将下述的内容 soft nproc 2048 修改为 soft nproc 4096 使用命令查看: tail -3 /etc/security/limits.d/90-nproc.conf ![在这里插入图片描述][20210524213944990.png] ### 3, max file descriptors \[65535\] for elasticsearch process likely too low, increase to at least \[65536\] ### 原因: 打开文件个数太少了! 解决办法: 修改最打开文件个数! 修改limits.conf vim /etc/security/limits.conf 在末尾添加如下内容: * hard nofile 65536 * soft nofile 65536 elastic soft memlock unlimited elastic hard memlock unlimited ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FhendzeHBjbQ_size_16_color_FFFFFF_t_70] ### 4,ERROR:bootstrap checks failed ### 原因:未锁定内存。 解决办法:在报错机器上的elasticsearch.yml配置文件中添加bootstrap.memory\_lock: true配置! ## ElasticSearch使用问题 ## ### 1,ES查询下标数过大 ### 原因: index \* pagesiz 大于ES默认的返回最大的值 1w,所以提示异常! 解决办法: 一、可以通过url设置,方便快捷不用重启。如下: curl -XPUT http://127.0.0.1:9200/book/_settings -d '{ "index" : { "max_result_window" : 200000000}}' **注意:** * 1.size的大小不能超过index.max\_result\_window这个参数的设置,默认为10,000。 * 2.需要搜索分页,可以通过from size组合来进行。from表示从第几行开始,size表示查询多少条文档。from默认为0,size默认为10 二、通过配置文件设置: { "order": 1, "template": "index_template*", "settings": { "index.number_of_replicas": "0", "index.number_of_shards": "1", "index.max_result_window": 2147483647 } ### 2,ES的分片未进行分配 ### **1、定位问题分片** 使用ES的cat API可以分析出未分配的分片信息及未分配的原因 curl -XGETlocalhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grepUNASSIGNED 命令返回信息包括索引名称、分片编号、是主分片还是副本分片、未分配原因等 如果是已删除索引的分片,可以直接使用删除命令删除索引: curl -XDELETE 'localhost:9200/index_name/' **2、集群有目的的延迟分配** 当某个节点脱离集群,主节点会暂时的延迟重分配分片,以减少重新平衡分片带来的资源浪费,这种情况下,如果源节点在一定时间(默认1分钟)内重新加入,可以恢复分片信息。这种情况的日志信息如下: [TIMESTAMP][INFO][cluster.routing] [MASTER NODE NAME]delaying allocation for [54] unassigned shards, next check in [1m] 可以手动修改延迟时间: curl -XPUT'localhost:9200/<INDEX_NAME>/_settings' -d ' { "settings": { "index.unassigned.node_left.delayed_timeout": "30s" } }' 如果需要修改所有索引的阀值,则可以使用\_all替换<INDEX\_NAME> **3、分片数目过多,而节点数不足** 主节点不会将主分片和副本分片分配至同一个节点,同样,也不会将两个副本节点分配到同一个节点,所以当没有足够的节点分配分片时,会出现未分配的状态;为了避免该种情况发生,节点数和副本数的关系应该为N>=R+1 (其中N为节点数,R为副本数量。 解决这个问题可以通过增加节点或者减少副本数量。 **4、需要对分片进行重分配** 分片重分配默认是开启的,但是可能因为某些原因关闭了重分配但是忘记开启了,开启后,分片被重分配。 开启重分配命令: curl -XPUT 'localhost:9200/_cluster/settings'-d '{ "transient": {"cluster.routing.allocation.enable" : "all" } }' **5、集群中分片数据已不存在** 数据在集群中已不存在,处理方法: * 1,恢复存有0分片的源节点,并加入到集群中(不强制重新分配主分片) * 2,使用Reroute API强制重分配分片 curl -XPOST'localhost:9200/_cluster/reroute' -d '{ "commands" : [ { "allocate_empty_primary" : { "index" :"constant-updates", "shard" : 0, "node":"<NODE_NAME>", "accept_data_loss": "true" } }] }' * 3,从原始数据重建索引或者从备份快照中恢复 **6、磁盘空间不足** 一般情况下,当磁盘利用率达到85%时,主节点将不再分配分片至该节点上 可以使用如下命令查看磁盘利用率: curl -s 'localhost:9200/_cat/allocation?v' 如果磁盘空间比较大,而85%利用率有些浪费,可以通过设`cluster.routing.allocation.disk.watermark.low` 和(或)`cluster.routing.allocation.disk.watermark.high`来增加该值: curl -XPUT 'localhost:9200/_cluster/settings'-d '{ "transient": { "cluster.routing.allocation.disk.watermark.low":"90%" } }' 注:如果需要集群重启有效,可将transient改为persistent;ES设置中百分比多指已使用空间,字节值多指未使用空间 **7、多版本问题** ES集群中存在多版本ES,导致不兼容问题 ### 3,ES索引库的状态只可读 ### 原因: ES索引库写入的数据的时候出现 retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"block 异常。 原因: 可能是因为该服务的磁盘快满了,因此ES集群修改了这些索引库的状态,让其只读,无法写入。 根本解决办法,增加磁盘或者清理磁盘无用的数据。 临时方法,修改器状态为可读。 PUT /_all/_settings { "index.blocks.read_only_allow_delete": null } ### 4,ES集群出现红色的情况 ### 首先进行查看集群的具体情况,使用 GET /\_cluster/health 命令查看集群的健康状态。 如果出现的是unassigned shards,说明缺失了分片,可以使用GET /\_cat/shards查看分片的状态并且找到缺失的分片。 如果是因为集群宕机问题而导致的主分片缺失,可以增加节点并且进行自动分片的话一般情况下是可以解决! 如果是因为数据缺失的话,也就是主副分片都丢失了,那么这种情况下的数据是无法恢复的,可以根据情况进行选择,若是重要索引库的数据,可以使用reindex将数据重新迁移,可以解决集群red的情况,但是缺少的数据是无法找回的。 如果是不重要的索引库,那么删除该索引库重建即可。 ### 5,ES集群GC回收失败 ### 解决办法: 1.升级JDK的版本,JDK的版本高于1.8\_145; 2.减少GC回收频率。 ### 6, 脑裂 ### master not discovered or elected yet, an election requires a node with id 解决办法: 1.指定master节点,es7.x配置, 2.删除原有data的数据,清空从来 es7.x配置示例: cluster.name: pancm node.name: node-3 network.host: 192.168.8.160 node.master: false node.data: true discovery.seed_hosts: ["192.168.9.238","192.168.8.181","192.168.8.160"] #指定主节点 cluster.initial_master_nodes: ["192.168.9.238"] network.tcp.keep_alive: true network.tcp.no_delay: true transport.tcp.compress: true cluster.routing.allocation.cluster_concurrent_rebalance: 16 cluster.routing.allocation.node_concurrent_recoveries: 16 cluster.routing.allocation.node_initial_primaries_recoveries: 16 path.data: /home/elastic/masternode/data path.logs: /home/elastic/masternode/logs ## Logstash使用问题 ## ### 1,logstash: Could not execute action: PipelineAction::Create, action\_result: false ### 解决办法: 斜杆用“/” ### 2, logstash: object mapping for \[host\] tried to parse field \[host\] as object, but found a concrete value ### 解决办法: 在filter里面添加: #mutate { # rename => { "[host][name]" => "host" } # } mutate { rename => { "host" => "host.name" } } ## ElasticSearch的Java代码问题 ## ### 1…ES7.x版本查询报错: ### org.elasticsearch.action.search.SearchRequest.isCcsMinimizeRoundtrips()Z 解决办法: 缺失jar包,完整的pom配置如下: <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.3.2</version> <exclusions> <exclusion> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </exclusion> <exclusion> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.3.2</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.3.2</version> </dependency> ## 其他 ## 参考: https://blog.csdn.net/laoyang360/article/details/78443006 https://blog.csdn.net/u013673976/article/details/53305898 https://www.datadoghq.com/blog/elasticsearch-unassigned-shards/ https://blog.csdn.net/kezhen/article/details/79379512 [ElasticSearch实战系列][ElasticSearch]: * [ElasticSearch实战系列一: ElasticSearch集群+Kinaba安装教程][ElasticSearch_ ElasticSearch_Kinaba] * [ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程—图文详解][ElasticSearch_ ElasticSearch_DSL] * [ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程][ElasticSearch_ ElasticSearch_JAVA API] * [ElasticSearch实战系列四: ElasticSearch理论知识介绍][ElasticSearch_ ElasticSearch] * [ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合][ElasticSearch_ ElasticSearch_Metric] * [ElasticSearch实战系列六: Logstash快速入门][ElasticSearch_ Logstash] * [ElasticSearch实战系列七: Logstash实战使用-图文讲解][ElasticSearch_ Logstash_-] * [ElasticSearch实战系列八: Filebeat快速入门和使用—图文详解][ElasticSearch_ Filebeat] * [ElasticSearch实战系列九: ELK日志系统介绍和安装][ElasticSearch_ ELK] * [ElasticSearch实战系列十: ElasticSearch冷热分离架构][ElasticSearch_ ElasticSearch 1] 原创不易,如果感觉不错,希望给个推荐!您的支持是我写作的最大动力! 版权声明: 作者:虚无境 博客园出处:http://www.cnblogs.com/xuwujing CSDN出处:http://blog.csdn.net/qazwsxpcm 掘金出处:https://juejin.im/user/5ae45d5bf265da0b8a6761e4 个人博客出处:http://www.panchengming.com [20210524213844920.png]: /images/20221022/028214bd0ef24e92af03d0d3e705d656.png [20210524213944990.png]: /images/20221022/e914e12cfa4e468594c2cc12daec207f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FhendzeHBjbQ_size_16_color_FFFFFF_t_70]: /images/20221022/b4f8e54245d14b84b48ac0b74ae93ed9.png [ElasticSearch]: https://www.cnblogs.com/xuwujing/tag/elasticsearch/ [ElasticSearch_ ElasticSearch_Kinaba]: https://www.cnblogs.com/xuwujing/p/11385255.html [ElasticSearch_ ElasticSearch_DSL]: https://www.cnblogs.com/xuwujing/p/11567053.html [ElasticSearch_ ElasticSearch_JAVA API]: https://www.cnblogs.com/xuwujing/p/11645630.html [ElasticSearch_ ElasticSearch]: https://www.cnblogs.com/xuwujing/p/12093933.html [ElasticSearch_ ElasticSearch_Metric]: https://www.cnblogs.com/xuwujing/p/12385903.html [ElasticSearch_ Logstash]: https://www.cnblogs.com/xuwujing/p/13412108.html [ElasticSearch_ Logstash_-]: https://www.cnblogs.com/xuwujing/p/13520666.html [ElasticSearch_ Filebeat]: https://www.cnblogs.com/xuwujing/p/13532125.html [ElasticSearch_ ELK]: https://www.cnblogs.com/xuwujing/p/13870806.html [ElasticSearch_ ElasticSearch 1]: https://www.cnblogs.com/xuwujing/p/14599290.html
还没有评论,来说两句吧...