1.JDK:1.7.0_55之后版本,55之前JDK有一些BUG会导致索引文件毁坏
2.JAVA堆配置不是越大越好,建议配置不超过物理内存的一半,其余内存留给操作系统的IO缓存管理
3.ES版本1.3.2以上
4.修改es堆内存,ES_MIN_MEM(相当于-Xms,默认256m), ES_MAX_MEM(相当于-Xmx,默认1g)
5.增加打开文件句柄数,推荐设置为32k-64k.将-Des.max-open-files设置为true可以在启动的时候打印出每个进程能打开的最大文件数;也可以为每个节点重新设置max_file_descriptors
6.虚拟内存设置:修改/etc/sysctl.conf文件中vm.max_map_count参数为262144设置一个进程可以拥有的VMA(虚拟内存区域)的数量。运行sysctl vm.max_map_count命令查看设置。
7.需要避免ES被Swap out,有三种策略:
1)禁止swap,用在只需要运行es的情况,命令:sudo swapoff -a,若要永久生效,需要修改/etc/fstab,将任何包含swap的行注释掉
2)配置vm.swappiness=0
3)修改config/elasticsearch.yml文件配置bootstrap.mlockall: true,配置完通过curl http://localhost:9200/_nodes/process?pretty检查配置是否生效,否则需要执行ulimit -l unlimited赋予权限,或者重启ES通过命令:./bin/elasticsearch -Djna.tmpdir=/path/to/new/dir
8.使用bulk api,多线程并发创建。
9.存储设备,最好是SSD硬盘
如何提高ES索引创建效率
于 2015-01-05 19:09:18 首次发布