Elasticsearch 100问(下)
四、ES启动检查
43、堆大小检查
JVM初始堆大小(Xms)与最大堆大小(Xmx)的值设置为相同。
44、文件描述符检查
设置为65536。
45.内存锁定检查
直接禁用操作系统的交换分区。
46.最大线程数检查
最大线程数,最少2048。
47.最大虚拟内存检查
max memory size设置为unlimited。
48.最大文件大小检查
file size设置为unlimited。
49.虚拟内存区域最大数量检查
vm.max_map_count=262144
50.JVMClient模式检查
OpenJDK提供了两种JVM的运行模式:clientJVM模式与serverJVM模式。需要以server的方式来启动ES,这也是默认的。
51.串行收集检查
ES默认使用CMS收集器,不能使用串行收集器。
52.系统调用过滤器检查
bootstrap.system_call_filter:false
- OnError与OnOutOfMemoryError检查
升级到Java8u92使用ExitOnOutOfMemoryError。
54.Early-access检查
需要让ES运行在JVM的稳定版。
55.G1GC检查
JDK8的早期版本有些问题,会导致索引损坏,JDK8u40之前的版本都会受影响。
五、优化写入速度
56、加大translog flush间隔,目的是降低iops、writeblock。
index.translog.durability:request这是影响ES写入速度的最大因素。
57、加大index refresh间隔,除了降低I/O,更重要的是降低了segmentmerge频率。
58、调整bulk请求。
59、优化磁盘间的任务均匀情况,将shard尽量均匀分布到物理主机的各个磁盘。
60、优化节点间的任务分布,将任务尽量均匀地发到各节点。
61、优化Lucene层建立索引的过程,目的是降低CPU占用率及I/O,例如,禁用_all字段。
六、搜索优化
62、为不再更新的只读索引执行forcemerge,将Lucene索引合并为单个分段。
63、使用eager_global_ordinals
64、关闭norms
65、index.store.preload预加载,加速查询。
66、调节搜索请求中的batched_reduce_size
67、设置action.search.shard_count。
68、近似聚合.
69、深度优先和广度优先。
70、ARS PUT /_cluster/settings{"transient":{"cluster.routing.use_adaptive_replica_selection":true}}
71、doc_values
如果确信某字段不需要排序或者聚合,或者从脚本中访问字段值,那么我们可以设置 doc_values = false,这样可以节省磁盘空间。
72、field_data
fielddata默认是关闭的,只有在使用text字段进行排序或聚合的时候要用到。
七、故障诊断
73、Profile API慢查询诊断
检查查询执行时间和其他详细信息。
74、Explain API
对于未分配的分片,给出为什么没有分配的具体原因。
对于已分配的分片,给出为什么将分片分配给特定节点的理由。
75、节点CPU使用率高节点占用CPU很高
hot_threads API。
76、节点内存使用率高
bulk队列
Netty的内存池。
indexing buffer
超大数据集的聚合
分段内存。
Fielddata cache:
77、ES集群分片磁盘容量策略
PUT _cluster/settings
{
“transient”: {
“cluster.routing.allocation.disk.watermark.low”: “85%”,
“cluster.routing.allocation.disk.watermark.high”: “50gb”,
“cluster.info.update.interval”: “1m”
}
}
78、I/O分析工具
iostat、blktrace、pidstat、iotop、systemtap、
79、内存诊断
top、free、vmstat、sar -B、sar -W
80、cpu诊断
vmstat/mpstat/
strace –c、perf
81、网络连接和流量
Sar、netstat –anp等。
八、其它相关的
82、集群重启步骤一
第一步:先暂停集群的shard自动均衡。
curl -XPUT http://ip:9200/_cluster/settings -d’
{
“transient” : {
“cluster.routing.allocation.enable” : “none”
}
}’
83、集群重启步骤二
第二步:shutdown你要升级的节点
curl -XPOST http://ip:9200/_cluster/nodes/_local/_shutdown
也可以通过各自的节点ID来关闭指定的节点(或者像这里说明 的别的选项):
curl -XPOST ‘http://ip:9200/_cluster/nodes/nodeId1,nodeId2/_shutdown’
84、集群重启步骤三
第三步:升级重启该节点,并确认该节点重新加入到了集群中
85、集群重启步骤四
第四步:重复2-3步,升级重启其它要升级的节点。
86、集群重启步骤五
第五步:重启启动集群的shard均衡
curl -XPUT http://ip/_cluster/settings -d’
{
“transient” : {
“cluster.routing.allocation.enable” : “all”
}
}’
到此整个集群安全升级并且重启结束。
87、集群规划
数据总量,每天的增量;
查询类型和搜索并发,QPS;
SLA级别。
88、节点数量
节点总数不应该太多,一般来说,最大集群规模最好控制在100个节点左右。
89、分片大小及分片数量
单个分片不要超过50GB,最大集群分片总数控制在几十万的级别。太多分片增加了主节点的管理负担,而且集群重启恢复时间会很长。
90、服务器配置
建议为集群配置较好的硬件,搜索对CPU、内存、磁盘的性能要求都很高,要达到比较低的延迟就需要较好的硬件资源。使用相同配置的服务器。
91、内存比较大的服务器,官方建议使用内存大小除以64GB来确定要部署的节点数,每个节点配置一部分数据盘,优点是利用率最高,缺点是部署复杂。
92、Commit Point
Lucene中有一个文件,用来记录所有Segments信息,叫做CommitPoint。查询时会同时查询所有Segments,并且对结果汇总。
93、es中默认是30分钟才flush一次磁盘
es数据提交到os chche。默认30分钟才flush一次磁盘,所以才需要translog。
94、flush命令的api如下:
POST /blogs/_flush //flush特定的index
POST /_flush?wait_for_ongoing//flush
95、elasticsearch可在本地离线安装文档。
Elasticsearch 100问(下)相关推荐
- Elasticsearch 100问(上)
一.基本概念 1.ElasticSearch是什么: Elasticsearch是一个分布式的,开源的NoSQL数据库.通常做为文档搜索数据库. 2.什么是索引(indices) indices分为两 ...
- MySQL 高频 100 问
欢迎关注方志朋的博客,回复"666"获面试宝典 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下My ...
- 深度学习100问-1:深度学习环境配置有哪些坑?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 从今天起,开辟一个新的专栏,名字就叫深度学习100问.选取深度学习 ...
- 深度学习100问:图像语义分割有哪些经典的上采样方法?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 大家都知道目前主流的语义分割模型都是编码-解码框架的.通过编码器不 ...
- 嵌入式系统理解及相关知识100问
开发板(demoboard)是用来进行嵌入式系统开发的电路板,包括中央处理器.存储器.输入设备.输出设备.数据通路/总线和外部资源接口等一系列硬件组件.开发板一般由嵌入式系统开发者根据开发需求自己订制 ...
- [灵魂拷问]MySQL面试高频100问(工程师方向)
前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...
- Oracle弱智100问
Oracle弱智100问 1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger s ...
- 示波器基础知识100问
www.EET-china.com 点击打开链接 编者注: 本文件为电子工程专辑网站编辑部原创,电子工程专辑享有本文章完全著作权, 如需转载该文章,必须经过电子工程专辑网站编辑部同意.联系电子工程专辑 ...
- 二建《机电》案例 100 问
二建<机电>案例 100 问 1.在定制分支电缆时,应注意哪些问题? [答案]订购分支电缆时,应根据建筑电气设计图确定各配电柜位置,提供主电缆的型 号.规格及总有效长度:各分支电缆的型号. ...
最新文章
- mustache模板技术
- Alpha预乘-混合与不混合[转]
- 佳能c3320怎么设置接收方_入门级单反相机佳能800D是否值得买?在我看来价格决定一切...
- Linux 汇编学习
- 文件如何存储c语言,急求如何将下列C语言程序数据存储到文件中?
- 建造者模式Builder
- 大叔手记(2):为每个应用程序池单独设置aspnet.config配置文件
- matlab读取txt文档三行数据库,Matlab中的textread textscan读取文本文件
- Matisse图片选择
- 教你如何关闭Surface Go的触摸键盘?
- SEO怎么做?SEO的具体流程是什么?
- python Django 快捷键
- Win10 1809版本多用户远程登陆
- mybatis自联表三级菜单
- 【Android】自定义View和控件时出现Binary XML file line #报错行数: Binary XML file line #9: Error inflating class 类路径
- 层次分析法实例:选择旅游目的地
- 全国计算机等级考试补考时间,全国计算机等级考试可以补考么(全国计算机一级报名时间)...
- 【干货】淘金币用户体验升级(含直播回放)
- SQL Server2012 序列号 注册码
- 常用CASE工具介绍 1