gydtep 发表于 2021-9-19 20:46:43

能否通过 page cache 尽量减少查询过程中产生的文件IO 将直接影响到查询效率。本节将从 Elasticsearch 内存分布,lucene 文件类型和使用场景,文件读取方式几个层面展开介绍。

gydtep 发表于 2021-9-19 21:23:02

Elasticsearch 内存相关
ES 进程的 JVM 堆内存主要包括以下几部分内容(不详细展开)
• Indexing Buffer:索引缓冲区,用于存储新索引的文档,当其达到阈值时,会触发 ES flush 将段落到磁盘上;

gydtep 发表于 2021-9-21 18:24:25

运行
执行命令
./es-pcstat <config_file>
例:./es-pcstat -collectIntervalFlag=30 -sortFlag=true ./es.conf

gydtep 发表于 2021-9-21 19:14:39

运行后会将采集到的数据回写到被监控的 ES 集群
可导入kibana仪表盘配置文件&#128206;es-pcstat-kibana.json,通过图表进行page cache分析。

gydtep 发表于 2021-9-22 07:36:29

通过 es-pcstat 采集得到的 page cache 时序图,可为性能监控、资源分析、异常请求定位等问题提供一定帮助,以下将从笔者团队使用中的几个案例进行展开。

gydtep 发表于 2021-9-22 11:40:57

随着系统的发展、数据量的增长,在某个业务场景 ES 相关的资源和效率可能逐渐成为瓶颈,这时候我们就需要从底层视角来推动上层的优化,如图13所示,根据监控曲线可发现 fdt、doc、pos 几类文件的常驻内存资源较多,便可从这3类文件的使用情况出发来制定优化方向:

gydtep 发表于 2021-9-22 12:54:43

fdt 常用于获取_source字段的内容,如果存储并在查询结果中获取大量字段很容易导致该文件频繁访问,进而占用较多资源,可以考虑对 _source 进行适当删减,或将数据获取逻辑移至宽表数据库,如HBase等,让 ES 的资源更多的用于搜索本身;

gydtep 发表于 2021-9-22 19:14:24

2016 年 6 月我在做一个即时通讯项目时,原始网关是一个基于 netty 实现的 Java 项目,后来使用 Go 语言重构时其 TCP 网路库各个接口实现就直接借鉴了 netty。同年 8 月份在其上添加了 websocket 支持时

gydtep 发表于 2021-9-22 20:10:14

觉得 websocket提供的 onopen/onclose/onmessage 网络接口极其方便,就把它的网络接口改为 OnOpen/OnClose/OnMessage/OnClose ,把全部代码放到了 github 上,并在小范围内进行了宣传

gydtep 发表于 2021-9-23 12:02:08

目前 Session 接口的实现只有 session 结构体,Session 作为接口仅仅是提供了对外可见性以及遵循面向编程接口的机制,之后我们谈到Session,其实都是在讲 session 结构体。
页: 413 414 415 416 417 418 419 420 421 422 [423] 424 425 426 427 428 429 430 431 432
查看完整版本: 免费领取阿里云服务器2000元代金券!