我目前在我们的开发机器上使用elasticsearch。我们希望在几周内提高工作效率。今天我打出了“顶级”,我感到非常震惊。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28972 elastics 20 0 27.4g 1.4g 39m S 186 4.3 2:11.19 java
弹性搜索使用如此多的内存是否正常?我从来没有这样配置过。 如果我们在一台具有32 GB RAM的机器上拥有多达5个索引,那么完美配置是什么? 我应该配置多少副本/碎片? 如何控制内存使用?
我不想得到与Solr =>相同的问题。意外停机。
感谢您的帮助!
答案 0 :(得分:4)
Es 1.0版之后。默认文件存储模式为Mmapfs .mamapfs以HD格式存储数据。但它使用虚拟内存概念。虽然数据存在于HD中,但它看起来像是从RAM中获取数据。它比其他文件系统更快。
因此mmapfs可能看起来消耗更多空间并且它会阻塞一些地址空间。但它是健康的并且完全没有问题。
配置分片和副本的最佳数量 refer this。
要摆脱意外停机和数据丢失。请配置以下条款..
1) ulimit 因某些用户无法打开文件,必须尽可能多地增加。
2)不应预配置任何线程。以下是一些示例配置
# Search pool
threadpool.search.type: fixed
threadpool.search.size: 5
threadpool.search.queue_size: 200
# Bulk pool
threadpool.bulk.type: fixed
threadpool.bulk.size: 5
threadpool.bulk.queue_size: 300
# Index pool
threadpool.index.type: fixed
threadpool.index.size: 5
threadpool.index.queue_size: 200
# Indices settings
indices.memory.index_buffer_size: 30%
indices.memory.min_shard_index_buffer_size: 12mb
indices.memory.min_index_buffer_size: 96mb
# Cache Sizes
indices.fielddata.cache.size: 15%
indices.fielddata.cache.expire: 6h
indices.cache.filter.size: 15%
indices.cache.filter.expire: 6h
# Indexing Settings for Writes
index.refresh_interval: 30s
index.translog.flush_threshold_ops: 50000