es使用笔记

es 学习笔记
1 es的建议内存设置。
2.x以下版本es默认堆内存1G,推荐最大堆内存设置32G(不要超过服务器内存的一半).
2.x以上版本es默认堆内存2G.推荐最大堆内存设置32G(不要超过服务器内存的一半).
内存指针压缩(compressed oops)的技术
Java使用一个叫作 内存指针压缩(compressed oops)的技术来解决这个问题。它的指针不再表示对象在内存中的确切位置,而是表示偏移量。这意味着32位的指针可以引用40亿个对象,而不是40亿个字节。最终,也就是说堆内存增长到32 GB的物理内存,也可以用32位的指针表示。
2 es对服务器硬件的一般要求
es对CPU要求很高,已知10并发最少需要CPU16C(16个逻辑cpu)以上.
3 es设置内存配置方式
堆内存大小设置可以是初始化时设置,(启动脚本中),也可以在配置文件中设置…内存大小设置是Xmx和Xms 最好设置相等(防止内存抖动)
Xss线程内存大小设置
以前的版本可以通过export ES_HEAP_SIZE=10g或者./bin/elasticsearch -Xmx10g -Xms10g来设置自己的堆内存的大小,但版本在6.2.x开始,就不支持这种设置了.
之后 的 ES_JAVA_OPTS="-Xms2g -Xmx2g"./bin/elasticsearch
4 单台服务器设置多节点可以使数据更安全一些.设置多分片作用把数据分开存储,备份分片主分片挂掉备份分片可以成为主分片.
5 数据存储在那个分片上的,通过公式计算可的 shard = hash(routing) % number_of_primary_shards

6 由于 5 可以知主分片的数量只能在创建索引时定义且不能修改:如果主分片的数量在未来改变了,所有先前的路由值就失效了,文档也就永远找不到了.
7 ES并发问题 使用乐观锁或悲观锁,给每个次修改或写入的索引增加版本号,看版本号是否对应.判断是否写入修改正确
①、elasticsearch多线程异步并发修改时,采用乐观锁基于_version进行并发控制。其过程和上述乐观锁类似。
②、elasticsearch后台,进行数据同步时,采用的是多线程异步的,所以更新的请求是乱序的。当后修改的操作先到,跟新完成后,先修改的操作后到的话,会被丢弃掉,不会让旧值覆盖新值。
8 swapping**是性能的坟墓
内存交换到磁盘对服务器性能来说是致命的。想想看一个内存的操作必须是快速的。 如果内存交换到磁盘上,一个100微秒的操作可能变成10毫秒,再想想那么多10微秒的操作时延累加起来。不难看出swapping对于性能是多么可怕。 最好的办法就是在你的操作系统中完全禁用swapping
暂时禁用:sudo swapoff -a
永久禁用:
修改参数的方法是修改/etc/sysctl.conf文件,加入vm.swappiness=xxx,并重起系统。这个操作相当于是修改虚拟系统中的/proc/sys/vm/swappiness文件,将值改为XXX数值。
如果不想重起,可以通过sysctl -p动态加载/etc/sysctl.conf文件,但建议这样做之前先清空swap。
以上系统参数配置完成,还要修改elasticsearch.yml配置:
bootstrap.memory_lock : true 锁定内存,防止进行内存的交换使用swapping
9 Java面试题:32位系统jvm堆内存如下哪一个设置是最大且有效的( B )
B. -Xmx1500m
遇到问题
1 es应用是1.0版本的,3个计数器3个分片2个备份分片,压测时数据是180万数据,数据量大小是5个G左右。CPU16核,内存32G。每个es节点应用上内存分别做1G,2G,4G,压测都是10个并发就CPU85以上了。要求并发不是很高,50到100就行,10并发太低了.
问题解决 :CPU 核数增加为32C,压测到50并发 CPU 不到60%

从网上查到的知识

1 在ElasticSearch中,集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间是什么关系?
[Cluster]
集群,一个ES集群由一个或多个节点(Node)组成,每个集群都有一个cluster name 作为标识
node
节点, 一个ES实例就是一个node,一个机器可以有多个实例,所以并不能说一台机器就是一个node,大多是情况下每个node运行一个多例的环境或虚拟机上
index
索引,即一系列doucuments的集合.
shard
1 分片,ES是分布式搜索引擎,每个索引有个或多个分片,索引的数据被分配到各个分片上,相当于一桶水用了N个杯子装.
2.分片有助于横向扩展,Nge分片会被尽可能分配在不同的节点上,(例如有2个节点,4个主分片,那么每个节点会分到2个分片,后来你增加了2个节点,那么你这4个节点上都会有1个分片,这个过程叫relocation,ES感知自动完成).
3 分片是对立的,对于一个Search Requestde 行为,每个分片都会执行这个Request…
4 每个分片都是一个Lucene Index,所以一个分片只能存放 Interger.MAX_VALUE-128=2147483519个docs
replica
1 复制,可以理解为备份分片,相应的有primary shard
2 主分片和备分片不会出现在同一个节点上(防止单点故障),默认情况下一个索引会穿件5个分片一个备份.
3 如果只有一个节点,那么5个replica都无法分配(unassigned),此时clusterstatus会变成Yellow

学习知识
吃透Elasticsearch 堆内存(https://blog.csdn.net/laoyang360/article/details/79998974)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值