自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Elasticsearch 压测实践总结

搜索、ES运维场景离不开压力测试。1.宿主机层面变更:参数调优 & 配置调整 & 硬件升级2.集群层面变更:参数调优3.索引层面变更:mapping调整ES压测,官方推荐esrally工具(python编写)。虽然esrally功能丰富,但esrally的依赖比较多,很难快速搭建可用的压测环境。对于追求轻量工具的开发者而言,可以考虑使用infinilabs提供的loadgen工具。

2024-04-03 00:11:56 855

原创 ES 多次查询结果不一致,有哪些可能?

ES的搜索应用场景非常丰富,在极端情况下可能会出现同语句多次查询结果不一致的情况,特别是全文检索有打分的场景下。一般ES如果碰到同一个语句多次查询结果不一致的情况(数量不一致/顺序不一致),一般是如下几种case...

2024-03-15 22:34:24 981

原创 Elasticsearch模拟网络丢包

Elasticsearch一旦遇到网络抖动就可能节点(单个或者多个)掉出集群。从而集群出现red/yellow状态,理论情况下ES会自愈,但某些情况下可能非预期,此时就需要我们模拟各种case了,比如网络丢包。

2024-03-06 13:23:59 991

原创 elasticsearch7.17 terms聚合性能提升90%+

ES7 相比于 ES6 有多个层面的优化,对于开源的ES而言,升级是必经之路。ES的使用场景非常多,在升级过程中可能会遇到非预期的结果;比如之前文章提到的典型案例:ES7.17版本terms查询性能问题接下来再分析一个升级之后聚合性能下降的case;

2024-03-01 21:44:47 815

原创 笔记:GO1.19 带来的优化(重新编译juicefs)

go编写的应用程序(juicefs)在k8s(docker)中运行,时不时出现 OOM Killed。

2024-02-27 22:53:58 435

原创 ES 在单个节点的查询并发限制是多少?增加分片一定会提高聚合/查询速度吗

对于搜索集群而言,小节点多节点化一般是最佳实践。对于OLAP/日志集群而言,难以避免使用大节点(单节点高配置),因为太多节点容易造成master的压力。对于OLAP集群而言单节点可能存在数百甚至数千shard。此时我们就需要考虑一个问题,当我们增大shard数量,想利用ES的并发能力提高性能的时候,是否可以达到预期?

2024-02-20 21:22:10 571

原创 ES7.17由于IP变化导致的故障及恢复

1. k8s 升级,导致环境中的ES集群(7.17版本)重启2. 集群由于在公有云环境,IP不固定(重启后IP可能发生变化),通过 svc 进行访问3. 由多个sts一起维护一个ES集群(非operator的模式)注:一般开源的ES,无论在虚拟机还是容器中部署,最佳实践还是固定IP;4. 集群重启之后,状态变成了 red

2024-02-01 02:00:04 1180

原创 ES查询多个索引,是否并发查询?

索引拆分一直是ES最佳实践里面非常重要的一环;用户时常会有疑惑,从单独索引拆分出多个索引总体性能上是否有变化,是否会并发查询多个索引?即从 order 索引,拆分成 order-2024-01, order-2024-02...多个索引。性能是否变化,是否会并发查询。

2024-01-26 12:40:36 278

原创 macOS 13(本机)golang程序交叉编译成 ARM架构

golang程序(JuiceFS)需要支持ARM64架构,重新编译;可以在 /usr/local/bin 找到musl相关的工具命令。本地环境:macOS:13。

2024-01-16 13:57:06 587

原创 elasticsearch-hadoop.jar 6.8版本编译异常

编译 7.17 版本时很正常,注意设置下环境变量就好,JAVA8_HOME/....编译 6.8 版本时(要求jdk8 / jdk9),出现异常。重新编译 elasticsearch-hadoop 包;

2023-12-27 23:00:23 1268

原创 ES 索引关闭source后是否可以更新?

ES优化有一个常用手段是将不需要返回的字段的source关闭掉,以此节省磁盘空间,同时也节省内存;比如向量字段一般关闭source;ES 索引(部分字段 或者 全部字段)关闭source后是否可以更新?

2023-12-21 14:45:54 533

原创 Elasticsearch Split和shrink API

如果需要将当前index的primary shard数量减少时,可以使用shrink index api。如果需要将当前index的primary shard数量增加时,可以使用split index api。- 数据写入新索引,查询时候包含 old_index,new_index。结论:ES6.8无法通过split API解决索引分片过少的问题。会生成一个新index,但会保留原来的index。会生成一个新index,但会保留原来的index。2.尝试保留索引,生成新索引。集群版本 6.8.5。

2023-08-23 19:38:07 565

原创 ES:一次分片设计问题导致的故障

CPU高” 和写入、日志打印相关,无法获取更详细的信息,且由于瞬时抓取,也并不非常精准。3.查询CPU的使用,GET _nodes/hot_threads。2.ES日志:大量日志打印相关异常(routate等调用栈)5. 根据以往经验,可能和单分片doc数量限制相关。只能看到相应的结果指标,无法反应出原因。3.线程池队列积压,但没有reject。6.继续搜索日志,确认是单分片超过限制。删除索引重建,并设计好分片。1. 单节点CPU持续高。4.使用方没有记录日志。大致确认和日志相关。

2023-08-21 12:07:34 1332

原创 RestHighLevelClient初始化http参数的含义

RestHighLevelClient初始化http参数的含义,主要包括keepalive、connectTimeout、socketTimeout、connectionRequestTimeout、maxConnPerRoute、maxConnTotal

2023-07-04 23:37:00 1221

原创 ES7.5.2 script_score查询的bug

背景1.需要用到dense_vector +script_score来进行算分 --- 排序2.ES版本为7.5.2,用到了自定义的插件,短期无法升级到7.17.5(或更高版本)3.script_score查询在加入date类型的字段作为查询条件时,出现NPE异常

2023-05-31 16:09:45 386

原创 ES执行查询时单节点存在多分片,是否会合并查询

同一个索引的多个分片分配在了一个ES节点上,当一次查询需要查找的分片中有多个分片在一个节点上,该ES节点是否会合并查询,使用单个线程查询多个分片?

2023-02-14 17:08:27 808 1

原创 Elasticsearch版本升级实践、注意事项

从官方文档看可以发现两个大版本升级需要关注到具体的版本,比如想从 5.x 版本升级到 7.x 版本,就必须先升级到 6.8 版本,再从 6.8 升级到 7.x 版本。1. API检查是否可以升级,不能则先改造2. 升级ES集群(此时依然使用6.8客户端,兼容访问6.8/7.17集群)3. 重建索引(去掉type)4. 修改客户端代码 & 升级客户端版本到 7.17

2022-12-15 14:02:13 3064

原创 ES7.5升级7.17后在写多读少场景下CPU、IO飙升

ES PAAS管理的集群升级了100+,从7.5升级到7.17 (保证每个大版本最终仅维护一个小版本集群),由于业务使用差异大,也出了不少问题,前面的文章也有提到过Integer类型字段使用terms查询效率低的情况...

2022-09-29 22:24:26 2021

原创 ES7.17版本terms查询性能问题

ES迭代过程支持了越来越多特性与优化,版本升级显得十分必要。测试又很难覆盖所有场景,灰度升级过程中难免遇到一些问题,这里主要分析terms查询的一个性能损失问题。

2022-09-23 10:21:24 1966

原创 一个迷惑性很高的生产故障-Elasticsearch日志rotate导致节点CPU激增

Elasticsearch CPU很高的场景很常见,优化读写以及扩容即可解决问题。 如果只有一个节点CPU高,那可能的情况就比较多了,节点机器异常?读写不均匀?GC过高?forcemerge? 这里描述一个极具迷惑性的case。...

2022-07-23 03:36:21 1629

原创 Elasticsearch容器化后pod出现throttle的情况

Elasticsearch容器化后,节点所在pod偶发CPU throttle的情况。

2022-07-14 23:20:18 1243

原创 Elasticsearch出现401异常?业务并没有受到影响?

401表示鉴权失败,正常情况下,鉴权失败表示用户名密码信息异常。但是某些场景下,ES 的 Gateway中收到了401的响应,但是业务很正常...

2022-06-29 13:04:02 1881

原创 Elasticsearch8.2扩容挪数据master出现异常

Elasticsearch8.2扩容,exclude是一个基本操作。生产过程中操作的时候出现故障,master节点出现异常,产生的现象和脑裂类似...

2022-06-29 11:23:24 933

原创 Elasticsearch8.2 使用snapshot备份能力

Elasticsearch8版本相较于之前版本参数和使用层面有了较多改动,但基本使用方式是一致的; 本文将介绍ES8版本如何在云环境中设计snapshot备份存储方案;

2022-06-25 11:32:44 1073

原创 ES7安装hanlp插件出现AccessControlException: access denied (“java.io.FilePermission“ “data/dictionary/Core.

ES7安装hanlp插件出现AccessControlException: access denied ("java.io.FilePermission" "​data/dictionary/CoreNatureDictionary.tr.txt" "read")

2022-06-11 00:31:07 1406

原创 brew upgrade异常(git fetch --unshadow出现RPC failed; HTTP 504 curl 22 The requested URL returned error)

brew update 更新时 shallow clone参考:brew update 更新时 shallow clone - 知乎其中有一个步骤需要git fetch --unshallow 此时出现:RPC failed; HTTP 504 curl 22 The requested URL returned errorGoogle查阅文档基本都认为是clone的代码文件过大,出现中断,但是并没有解决方案;解决方式:最后通过直接删除core目录(rm -rf .

2022-05-05 23:09:55 915

原创 【分析】segments的version_map_memory指标具体表示什么?

ES有很多的监控指标,其中有一些指标官方解释的实在模糊。比如version_map_memory:(byte units) Total amount of memory used by all version maps across all shards assigned to selected nodes.官方解释Cluster stats API | Elasticsearch Guide [7.16] | Elastic全文:【分析】segments的version_map

2022-01-27 16:15:53 1388

原创 ES recovery、主副分片复制会有一段时间block写入?

先说结论:1.ES在主副本分片复制时候不会block写入(version > 2.x)2.ES在recovery主分片时候会有一段时间block写入全文:ES recovery、主副分片复制会有一段时间block写入?-阿里云开发者社区ES在主副本分片复制时候不会block写入(version > 2.x)ES在recovery主分片时候会有一段时间block写入https://developer.aliyun.com/article/861614?spm=a2c6h.131

2022-01-26 18:53:12 1489

原创 【离线】esrally实践总结

简介:1.真正的离线安装esrally2.术语介绍,官方数据集、track介绍3.官方数据集下载4.离线使用esrally测试现有ES测试集群5.对比两次race(测试)的结果6.测试时间太长怎么办?7.报告分析全文:【离线】esrally实践总结https://developer.aliyun.com/article/851848?spm=a2c6h.13262185.0.0.7baa709dE62k1c...

2022-01-24 22:51:08 630

原创 ES写入毛刺问题?从原理到调优

简介:ES是一个非常完善的搜索引擎,可以用于业务搜索、数据分析,其周边生态产品也十分丰富;正是由于ES的完善与通用性,用户使用ES的场景越来越多样化,通用的配置已经无法达到用户的稳定性需求,并且难以给出通用的最佳实践,需要专门的为某些场景进行调优。例如,update频繁的场景下的性能调优。全文:ES写入毛刺问题?从原理到调优https://developer.aliyun.com/article/860225?spm=a2c6h.13148508.0.0.23f54f0e8FEuhO.

2022-01-24 22:48:36 1801

原创 Mac上打包到Linux执行(go)、import调用本地代码(go)

参考:Managing dependencies - go.devGO调用本地代码module tikv-client-http-go​go 1.16​require ( github.com/tikv/client-go/v2 v2.0.0-unpublished)replace github.com/tikv/client-go/v2 v2.0.0-unpublished => ./lib/client-goGO调用远程包module tikv-clie.

2021-12-17 18:43:30 892

原创 mdtest/go-ycsb测试工具使用

最近做了juicefs和tikv的相关测试,也学习了下一些测试工具的使用;一些新的产品的测试主要依赖 官方提供的benchmark、常用测试工具、根据测试场景定制脚本 这些测试方法;文件系统、数据库相关的常用测试工具主要有:FIO、mdtest、go-ycsb这里介绍下 mdtest 和 go-ycsb;mdtestmdtest 是一个简单的 I/O 基准测试工具,现在是IOR工具套件的一部分,用于向存储系统发出高度并发的元数据操作流。它旨在展示文件系统能够为包括 mkdir、st.

2021-12-17 18:27:27 1555

原创 Elasticsearch插件开发与调试

背景:elasticsearch version :6.8.5插件开发类型:elasticsearch 变更数据记录插件开发略(完善后开源)插件debug(远程debug)1.准备发行版的ES(下载+解压)2.将开发好的插件(zip包)放到ES的plugins目录下,并解压3.配置新的policy文件,修改config/jvm.options(方法1)(一般物理机或者用于测试的情况使用)该步骤非必须,由于开发的插件需要用到反射,所以需要放开一定的权限PS.

2021-10-08 17:48:21 1191 2

原创 assert注意事项

结论:直接使用 assert field != null; 可以快速的check属性,但是该方法会在使用反射的时候多一个属性"$assertionsDisabled"分析:public class Assert { static final boolean $assertionsDisabled = !Assert.class.desiredAssertionStatus(); public static void main(String[] args) {

2021-10-08 11:33:38 482

原创 ES6.x默认store为mmapfs(Linux 64位),mmap性能相关分析

ES6.x默认store为mmapfs(Linux 64位):Store | Elasticsearch Guide [6.8] | Elastichttps://www.elastic.co/guide/en/elasticsearch/reference/6.8/index-modules-store.htmlES7.x默认store为hybridfs,对特定的文件使用niofs或mmapfs:Store | Elasticsearch Guide [7.x] | Elastichttps://..

2021-09-27 16:26:16 1026

原创 笔记-Mac清理dns缓存

修改etc/hosts 不能立即生效理论上应该立刻生效,不生效大概率是因为缓存,浏览器缓存以及DNS缓存浏览器缓存:重启浏览器/打开无痕窗口DNS缓存:清理dns缓存# MacOS 10.14sudo killall -HUP mDNSResponder执行后,等待一下即完成DNS刷新...

2021-07-28 17:56:37 355

原创 Elasticsearch CCR源码分析(补充)

接上篇TODOElasticsearch CCR源码分析上篇TODO:http请求(ccr/follow)接收到后,follow集群节点开始全量同步,是以snapshot的模式去拉leader集群数据的,那么是在什么时候将leader集群伪装成snapshot的repository的?理论上应该是在Node初始化的时候...还未验证,后续再补充该逻辑...如何加载ccr repositoryService1.node启动:进入构造方法:org.elasticsearc.

2021-07-13 12:42:06 257 1

原创 Elasticsearch CCR源码分析

本文基于Elasticsearch6.8.5版本ES使用的是Guice框架,依赖注入和暴露接口的方式和Spring差距较大,可先查看guice框架节点启动过程:org/elasticsearch/bootstrap/Elasticsearch.java(main)---》org/elasticsearch/node/Node.java(构造方法)加载插件&module---其中包括---》org/elasticsearch/xpack/ccr/Ccr.java(注册各种action)

2021-07-08 21:19:28 554 5

原创 Elasticsearch的long类型精准匹配异常?

ES version: 7.5.2现象:通过其他字段可以查询出elasticsearch的doc数据但通过某个long类型的字段精准匹配时不能hitGET index_name/_search{ "query": { "term": { "field": { "value": 2856928764909463600 } } }}===>无法hit结果GET ind

2021-06-24 15:59:41 2539 1

原创 ES智能巡检开发设计实践

项目背景PaaS 下管理了大量集群,监控和告警能快速的让开发维护人员,知道系统已经发生故障,并且辅助高效排障。但是无法提前预知集群的健康状况,开发人员和维护人员均无法在故障前及时作出调整。为了帮助用户及时的知道集群的健康状态,更好使用 Elasticsearch 集群,可以定期对集群进行指标检查并给出相应报告。巡检作业及时发现集群的健康问题,集群的配置是否合理,提前主动发现问题,能有效保证集群的稳定性、健状性,从而减少业务中断时间保证服务质量。为了解决集群健康状态提前预知困难的问题,可以通过抽取

2021-06-03 21:25:19 838

commons-io-2.3.jar

io重要jar包,commons-io-2.3.jar,亲测可用,很方便的封装类

2018-02-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除