00:00
接下来我们讲一下这个写入速度的优化啊,ES的默认配置呢,是综合了数据的可靠性,写入速度,搜索实质性等因素,那么可是实际在使用时啊,我们需要根据公司的需求来进行偏向性的优化,针对于搜索性能要求不高,但是对写入要求较高的场景呢,我们需要尽可能的选择恰当的写优化策略,那么综合下来有这么几个点我们需要注意一下,第一个。加大我们穿log的flash,目的是为了降低我们磁盘的每秒的输入输出。以及我们写锁的操作,对吧?嗯,还有一个增加index索引的刷新间隔,减少我们segment墨的次数,大家想象一下,如果你的间隔很短的话,就意味着你会频繁的将我们的内存中的数据放到我们的文件系统缓存当中,而文件系统缓存当中它也会随之写入到磁盘当中,当我们的磁盘当中满的情况下,它是不是需要合并啊?
01:01
当我们磁盘文件多了以后,是不是需要合并啊,那么你合并就会影响我们的效率,大家想是这样的吗?啊,当你合并的次数越多,你的这个效率不就越低嘛。嗯,还有一个我们可以调整我们的什么B的线程值和队列,其实就说白了就是批量处理啊,如果我们的批量数据越多,你的效率不就越快吗?还有一个优化节点之间的任务分配以及优化,如行中我们的索引建立,目的是降低CPU和IO的使用,还有呢,调整我们批量数据处理的线程池和队列啊,批量数据处理。还有呢,就是优化节点间的任务分布,以及优化如形成的索引建立,降低CPU的使用以及IO的操作,那批量数据提交呢,是因为ES提供了批量数据的API操作,那么我们可以通过这个API呢,来对我们写的操作进行大量的什么批处理。那么然后呢,我们的通用策略呢,你会发现我们批量数据的那个处理啊,它那个是100兆。
02:01
然后呢,数据的条数啊,一般是根据文档大小和服务器的性能而定的,那么每一批的数据大小呢,从五兆到15兆呢,去逐渐增加,就意味着呢,你需要自己来调试,当我们发现我们的提交性能没有明显增加的时候,这个就是你当前设备,当前集群的一个批量的最大值,那这样的话我们以后就好控制了啊,你得先提前做一些简单的测试,呃,接下来我们下面的是优化存储设备,咱们前面讲了ES是一种密集使用磁盘的应用,在段合并的时候会频繁的操作磁盘,所以对磁盘的要求较高,当磁盘的速度提升之后,集群的整体性能会大幅度提高。我们说了之前呢,咱们就提到了一个固态硬盘,你使用固态硬盘的话,那咱们性能呢,就会提高很多,来我们来说一下合理使用合并,Lucy呢是以段的形式来存储数据,当有新的数据写入索引时,Lucy就会创建一个新的段。随着数据量的增加,我们段的数量会。
03:02
越来越多,那么他落盘的文件也会越来越多,那么这样的话,在我们做处理的过程当中就会消耗很多的资源,那么我们查询的效率就会下降,所以在这种情况下,我们的ES是需要将我们的段进行合并的,而这个合并操作呀,它会导致我大量的资源被消耗,所以呢,我们ES呢,默认采用了比较保守的策略,在后台呢定期进行段合并,所以啊,我们如果能够合理的去将这个段合并的话,那么我们效率就比较高了啊,ES在操作数据时,会将写入的数据先放到内存当中。然后呢,按照指定的周期,对于我们内存中的数据写入到我们的操作系统的缓存当中,这个时间默认是一秒钟,那如果我们对搜索的实时性要求不高的情况下,我们可以将这个刷新的过程呢给它延长,比方说30秒,那么这样的话,我们的数据会放在我们的内存当中,而不会频繁的写到我们系统的文件缓存当中,那么你如果不是频繁的去写的话,那么文件缓存当中就不会频繁的去刷新我们的文件,这样的话我们落盘的次数就会降低,哎,就是这样,这样的话可以提高我们写的效率,但是同时我们会消耗更多的内存。
04:17
好,接下来我们再往下看,下面呢是加大我们flash的设置,加大flash设置,这就意味着我们要将我们的数据从我们系统的文件缓存当中要写入到磁盘里面,那如果我们加大缓存的话,就意味着我们能存储的数据就更多,那么我们写磁盘落盘的次数就越少,那么这样的话不就提升我们的效率了吗?对不对啊,就是这样啊。接下来减少副本的数量,这个我们讲过,ES软件为了保证它数据的安全性,它需要什么?设定我们副本,设定我们的备份,可是呢,当我们保存数据的时候呢,它要同时分片和副本呢,都保存成功才可以,否则数据是有可能会丢失的,但是啊,一旦我的副本的数量多了,那就会影响我们的写的效率,大家想是这样的吗?所以在这种情况下,如果我们需要大批量的写的话,你会有更多的副本的话,那完了效率非常低下。那么在这种情况下,我们可以尝试着先不让他进行我们的副本复制,而是设定我们关闭副本,一旦我们的数据写入完毕之后,我们再把它恢复成正常情况,让他去什么呢?来恢复我的数据,形成数据副本,那这样的话效率不就快很多吗?
05:28
哎,所以先把它禁用了再给它恢复,对吧,这是可以的啊。
我来说两句