- 浏览: 26009 次
- 性别:
- 来自: 北京
最新评论
-
明兜3号:
基于spring+quartz的分布式任务调度网盘地址:htt ...
Quartz集成springMVC (持久化任务、集群和分布式)
1.由gc引起节点脱离集群
因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。
解决方法:
(1)优化gc,减少gc时间。(2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_timeout)。后来发现根本原因是有个节点的系统所在硬盘满了。导致系统性能下降。
2.out of memory错误
因为默认情况下es对字段数据缓存(Field Data Cache)大小是无限制的,查询时会把字段值放到内存,特别是facet查询,对内存要求非常高,它会把结果都放在内存,然后进行排序等操作,一直使用内存,直到内存用完,当内存不够用时就有可能出现out of memory错误。
解决方法:
(1)设置es的缓存类型为Soft Reference,它的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引 用对象还能保证在Java抛出OutOfMemory 异常之前,被设置为null。它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory。在es的配置文件加上index.cache.field.type: soft即可。
(2)设置es最大缓存数据条数和缓存失效时间,通过设置index.cache.field.max_size: 50000来把缓存field的最大值设置为50000,设置index.cache.field.expire: 10m把过期时间设置成10分钟。
3.无法创建本地线程问题
es恢复时报错: RecoverFilesRecoveryException[[index][3] Failed to transfer [215] files with total size of [9.4gb]]; nested: OutOfMemoryError[unable to create new native thread]; ]]
刚开始以为是文件句柄数限制,但想到之前报的是too many open file这个错误,并且也把数据改大了。查资料得知一个进程的jvm进程的最大线程数为:虚拟内存/(堆栈大小*1024*1024),也就是说虚拟内存越大或堆栈越小,能创建的线程越多。重新设置后还是会报那这错,按理说可创建线程数完全够用了的,就想是不是系统的一些限制。后来在网上找到说是max user processes的问题,这个值默认是1024,这个参数单看名字是用户最大打开的进程数,但看官方说明,就是用户最多可创建线程数,因为一个进程最少有一个线程,所以间接影响到最大进程数。调大这个参数后就没有报这个错了。
解决方法:
(1)增大jvm的heap内存或降低xss堆栈大小(默认的是512K)。
(2)打开/etc/security/limits.conf ,把soft nproc 1024这行的1024改大就行了。
4.集群状态为黄色时并发插入数据报错
[7]: index [index], type [index], id [1569133], message [UnavailableShardsException[[index][1] [4] shardIt, [2] active : Timeout waiting for [1m], request: org.elasticsearch.action.bulk.BulkShardRequest@5989fa07]]
这是错误信息,当时集群状态为黄色,即副本没有分配。当时副本设置为2,只有一个节点,当你设置的副本大于可分配的机器时,此时如果你插入数据就有可能报上面的错,因为es的写一致性默认是使用quorum,即quorum值必须大于(副本数/2+1),我这里2/2+1=2也就是说要要至少插入到两份索引中,由于只有一个节点,quorum等于1,所以只插入到主索引,副本找不到从而报上面那个错。
解决方法:(1)去掉没分配的副本。(2)把写一致性改成one,即只写入一份索引就行。
5.设置jvm锁住内存时启动警告
当设置bootstrap.mlockall: true时,启动es报警告Unknown mlockall error 0,因为linux系统默认能让进程锁住的内存为45k。
解决方法:设置为无限制,linux命令:ulimit -l unlimited
6.错误使用api导致集群卡死
其实这个是很低级的错误。功能就是更新一些数据,可能会对一些数据进行删除,但删除时同事使用了deleteByQuery这个接口,通过构造BoolQuery把要删除数据的id传进去,查出这些数据删除。但问题是BoolQuery最多只支持1024个条件,100个条件都已经很多了,所以这样的查询一下子就把es集群卡死了。
解决方法:用bulkRequest进行批量删除操作。
因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。
解决方法:
(1)优化gc,减少gc时间。(2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_timeout)。后来发现根本原因是有个节点的系统所在硬盘满了。导致系统性能下降。
2.out of memory错误
因为默认情况下es对字段数据缓存(Field Data Cache)大小是无限制的,查询时会把字段值放到内存,特别是facet查询,对内存要求非常高,它会把结果都放在内存,然后进行排序等操作,一直使用内存,直到内存用完,当内存不够用时就有可能出现out of memory错误。
解决方法:
(1)设置es的缓存类型为Soft Reference,它的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引 用对象还能保证在Java抛出OutOfMemory 异常之前,被设置为null。它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory。在es的配置文件加上index.cache.field.type: soft即可。
(2)设置es最大缓存数据条数和缓存失效时间,通过设置index.cache.field.max_size: 50000来把缓存field的最大值设置为50000,设置index.cache.field.expire: 10m把过期时间设置成10分钟。
3.无法创建本地线程问题
es恢复时报错: RecoverFilesRecoveryException[[index][3] Failed to transfer [215] files with total size of [9.4gb]]; nested: OutOfMemoryError[unable to create new native thread]; ]]
刚开始以为是文件句柄数限制,但想到之前报的是too many open file这个错误,并且也把数据改大了。查资料得知一个进程的jvm进程的最大线程数为:虚拟内存/(堆栈大小*1024*1024),也就是说虚拟内存越大或堆栈越小,能创建的线程越多。重新设置后还是会报那这错,按理说可创建线程数完全够用了的,就想是不是系统的一些限制。后来在网上找到说是max user processes的问题,这个值默认是1024,这个参数单看名字是用户最大打开的进程数,但看官方说明,就是用户最多可创建线程数,因为一个进程最少有一个线程,所以间接影响到最大进程数。调大这个参数后就没有报这个错了。
解决方法:
(1)增大jvm的heap内存或降低xss堆栈大小(默认的是512K)。
(2)打开/etc/security/limits.conf ,把soft nproc 1024这行的1024改大就行了。
4.集群状态为黄色时并发插入数据报错
[7]: index [index], type [index], id [1569133], message [UnavailableShardsException[[index][1] [4] shardIt, [2] active : Timeout waiting for [1m], request: org.elasticsearch.action.bulk.BulkShardRequest@5989fa07]]
这是错误信息,当时集群状态为黄色,即副本没有分配。当时副本设置为2,只有一个节点,当你设置的副本大于可分配的机器时,此时如果你插入数据就有可能报上面的错,因为es的写一致性默认是使用quorum,即quorum值必须大于(副本数/2+1),我这里2/2+1=2也就是说要要至少插入到两份索引中,由于只有一个节点,quorum等于1,所以只插入到主索引,副本找不到从而报上面那个错。
解决方法:(1)去掉没分配的副本。(2)把写一致性改成one,即只写入一份索引就行。
5.设置jvm锁住内存时启动警告
当设置bootstrap.mlockall: true时,启动es报警告Unknown mlockall error 0,因为linux系统默认能让进程锁住的内存为45k。
解决方法:设置为无限制,linux命令:ulimit -l unlimited
6.错误使用api导致集群卡死
其实这个是很低级的错误。功能就是更新一些数据,可能会对一些数据进行删除,但删除时同事使用了deleteByQuery这个接口,通过构造BoolQuery把要删除数据的id传进去,查出这些数据删除。但问题是BoolQuery最多只支持1024个条件,100个条件都已经很多了,所以这样的查询一下子就把es集群卡死了。
解决方法:用bulkRequest进行批量删除操作。
发表评论
-
Flink入门到实践
2022-02-09 09:36 3721 导言 通过本文可以快 ... -
JavaAgent 应用(spring-loaded 热部署)
2021-11-16 16:26 470上一篇文章简单介绍了 javaagent ,想了解的可以移步 ... -
细分十一步,助你构建完整的数据运营体系
2020-12-15 09:26 199https://www.niaogebiji.com/arti ... -
Nginx的配置
2018-10-25 15:49 283Nginx的配置文件nginx.conf ... -
idea注册
2018-09-10 09:47 593开始 G91XMO9AVI-eyJsaWNlbnNlSWQiO ... -
java判断字符串是否为数字或中文或字母
2018-08-31 16:55 9495*各种字符的unicode编码 ... -
JAVA多线程实现的四种方式
2018-08-31 14:26 461Java多线程实现方式主要有四种:继承Thread类、实现Ru ... -
spring 注解
2017-10-23 09:59 361声明Bean的注解: @Component ... -
分布式锁
2017-09-06 15:27 563分布式锁1 Java常用技术 ... -
java内存管理与垃圾回收
2017-07-25 15:01 3041、Java虚拟机运行时的 ... -
jstat的用法
2017-07-25 10:15 546jstat的用法 用以判断JVM是否存在内存问题呢?如何判 ... -
JVM 调优参数详解
2017-07-24 14:05 339GC有两种类型:Scavenge GC 和Full GC 1、 ... -
JVM参数调优技巧
2017-07-24 14:02 409JVM参数调优实例解析 关于JVM参数调优,对于很多程序员来 ... -
Elasticsearch使用基础教程
2017-06-25 15:28 321基础概念 Elastics ... -
Quartz集成springMVC (持久化任务、集群和分布式)
2017-06-22 11:15 2204Quartz是一个开放源码项目,专注于任务调度器,提供了极为 ... -
JAVA 实现XML与JSON 相互转换
2017-06-22 09:22 18441.把XML转为JSON格式 ... -
hive语法详解
2016-09-29 16:35 440Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提 ... -
分布式系统之消息中间件rabbitmq
2016-09-21 09:49 438既然要做分布式系统,就不得不说分布式消息通信系统。分布式系统的 ... -
强大的分布式消息中间件——kafka
2016-09-21 09:45 1280在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这 ... -
RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
2016-09-21 09:42 699MQ框架非常之多,比较 ...
相关推荐
在使用Spring Data Elasticsearch框架时,可能会遇到一个常见的问题,即版本兼容性问题。Spring Data Elasticsearch 5.4.0设计时可能并未考虑到与Elasticsearch 5.4.1的完全兼容,导致在升级Elasticsearch到5.4.1后...
在处理ElasticSearch启动后自动终止(Killed)的问题过程中,作者遇到了一系列挑战。这个问题最早在上周出现,并持续影响系统的正常使用。最终,作者找到了解决问题的关键步骤,并在此进行分享。 #### 问题概述 当...
《ElasticSearch:可扩展的开源弹性搜索解决方案》前两章着重介绍了ElasticSearch 的基本功能和用法,包括ElasticSearch 的安装和配置、REST API 的使用方法,以及怎样使用Query DSL 语句进行查询、过滤、排序等。...
本手册不仅详细描述了如何使用Java作为客户端访问ElasticSearch的代码和方法,同时也描述了在使用ElasticSearch遇到的坑和解决方案,是新手入门不可多得的教材,也是老手借鉴提高的材料。
社区活跃,遇到问题时,可以在GitHub上提交Issue或者参与讨论,获取解决方案。 **5. 注意事项** - 鉴于安全考虑,建议仅在内部网络环境中使用Elasticsearch-Head,并确保ES集群的安全配置。 - 对于大型集群,过多...
**Elasticsearch、IK分词器与版本对应性** Elasticsearch(ES)是一种流行的开源全文搜索引擎,基于Lucene库构建,广泛应用于大...当遇到版本不匹配的问题时,及时关注官方更新或寻找社区提供的解决方案是解决之道。
### Linux 6.x 安装Elastic...通过以上步骤,您应该可以在 Linux 6.x 上成功安装并启动 Elasticsearch 5.x,并解决了可能出现的一些问题。这些指南和解决方法有助于确保您的 Elasticsearch 实例能够稳定高效地运行。
- **解决方案**:修改 `elasticsearch.bat` 文件,确保使用 ES 自带的 JDK。具体操作如下: - 打开 `elasticsearch.bat` 文件,找到调用 `elasticsearch-env.bat` 的部分。 - 修改 `elasticsearch-env.bat` 文件中...
- Elasticsearch拥有庞大的开发者社区,提供了丰富的文档、示例和社区支持,遇到问题时,用户可以很容易地找到解决方案。 总结来说,Elasticsearch 2.4.1是一个强大且稳定的搜索和分析引擎,其分布式特性、实时性...
在遇到问题和故障时,Elasticsearch提供了一些问题解决的策略和工具。例如,索引修复可以用来在数据丢失或损坏时恢复数据。同时,也提供了一些常见故障的排查和解决方案,如GC引起的节点脱离集群问题、内存溢出问题...
### Elasticsearch在Linux下的安装与配置详解 #### 一、Elasticsearch简介 Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,它基于...希望本文提供的解决方法能够帮助读者顺利完成Elasticsearch的部署工作。
本文将详细探讨如何构建并使用Elasticsearch Analysis IK 插件的7.6.0 版本,以及在使用过程中可能遇到的问题及其解决方案。 首先,标题中的"elasticsearch-analysis-ik-7.6.0.zip"表明我们要讨论的是Elasticsearch...
在本例中,我们将详细探讨如何使用Intellij IDEA来编译和调试Elasticsearch 6.1.0源码。Elasticsearch是一个基于...同时,请注意,官方文档和社区是解决遇到问题的宝贵资源,它们能为你提供许多有用的建议和解决方案。
Elasticsearch 是一款功能强大的开源搜索引擎,它提供了分布式、全文检索、实时分析的存储与检索解决方案。而 `elasticsearch-head` 是一个非常实用的Elasticsearch管理界面插件,允许用户通过浏览器直观地查看和...
例如,Kibana、Logstash和Beats等是常用的Elastic Stack组件,它们可以协同工作,提供完整的数据采集、处理和可视化解决方案。 9. **监控与优化**:Elasticsearch提供了一系列API来监控集群状态,如健康检查、节点...
3. **文档**:可能包括 README 文件,解释如何安装、配置和运行这个工具,以及可能遇到的问题和解决方案。 4. **测试文件**:用于验证代码功能的测试用例,确保工具在不同场景下都能正常工作。 5. **构建脚本**:...
通过上述步骤,可以顺利完成Elasticsearch 5.4.1以及Kibana的安装和基本配置。Elasticsearch和Kibana作为ELK堆栈的重要组成部分,在日志管理和数据分析方面发挥着关键作用。正确地安装和配置它们对于构建高效的数据...
总之,整合Spring Boot 1.x和Elasticsearch 5.x虽然需要克服一些兼容性问题,但通过选择合适的库版本、正确配置和使用Spring Data Elasticsearch的功能,你依然可以构建出高效的搜索和分析系统。
ElasticSearch 5.6版的Java API中文文档是针对Java开发者使用ElasticSearch的指导手册,它不仅翻译了官方文档,还包含了实际使用中遇到的问题和解决方案。 从文件内容来看,文档涉及到ElasticSearch Java客户端的多...