elasticsearch.yml 配置详解

2、高级配置 一个Elasticsearch节点会有多个线程池,但重要的是下面四个:索引(index):主要是索引数据和删除数据操作(默认是cached类型);搜索(search):主要是获取,统计和搜索操作(默认是cached类型);批量操作(bulk):主要是对索引的批量操作(默认是cached类型);更新(refresh):主要是更新操作(默认是cached类型)。可以通过给设置一个参数来改变线程池的类型(type),例如,把索引的线程池改成blocking类型: min: 1 size: 30 wait_time: 30s 下面是三种可以设置的线程池的类型: 2.1、cache线程池 cache线程池是一个无限大小的线程池,如果有很多请求的话都会创建很多线程,下面是个例子: threadpool: index: type: cached 2.2、fixed线程池 fixed线程池保持固定个数的线程来处理请求队列。size参数设置线程的个数,默认设置是cpu核心数的5倍qu。eue_size可以控制待处理请求队列的大小。默认是设置为-1,意味着无限制。当一个请求到来但队列满了的时候,reject_policy参数可以控制它的行为。默认是abort,会使那个请求失败。设置成caller会使该请求在io线程中执行。 threadpool: index: type: fixed size: 30 queue: 1000 reject_policy: caller 2.3、blocking线程池 blocking线程池允许设置一个最小值(min,默认为1)和线程池大小(size,默认为cpu核心数的5倍)。它也有一个等待队列,队列的大小(queue_size )默认是1000,当这队列满了的时候。它会根据定好的等待时间(wait_time,默认是60秒)来调用io线程,如果超时没有执行就会报错。 threadpool: index: type: blocking min: 1 size: 30 wait_time: 30s 3、操作系统配置 3.1、文件句柄限制:ES在索引过程中,尤其是有很多分片和副本时,会创建若干文件。因此操作系统对打开文件数量的限制不能少于32000。对于Linux服务器,通过可以在/etc/security/limits.conf中进行修改,并且可以用ulimit命令来查看当前值。 3.2、节点内存配置:ES每个节点默认的2014M内存空间可能是不够的。如果日志文件中有out of memory error错误,则应将环境变量ES_HEAP_SIZE设为大于1024的值。注意该值应超过总可用物理内存的50%,剩余内存可用作磁盘高速缓存,可大大提高搜索性能。

经验分享 程序员 微信小程序 职场和发展