当ElasticeSearch的索引变慢时,所采取的应对措施

参考了这个链接:http://stackoverflow.com/questions/33952089/slow-index-speed-of-elasticsearch。

请参考此链接进行HEAP大小调整和禁用交换分区:https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html

1. 调查内存是否不足,是否频繁发生大量的交换操作。

$ free
total       used       free     shared    buffers     cached
Mem:       2052380    1967252      85128          4      40220     250592
-/+ buffers/cache:    1676440     375940
Swap:      1048572     175832     872740

正在发生结构变化。

2. 调整堆的大小 duī de

将ES_HEAP_SIZE设置为物理内存的一半。

禁用3.swap。

参考这个进行设置。

vim /etc/sysconfig/elasticsearch
ES_HEAP_SIZE=1024m #物理メモリの半分 
MAX_LOCKED_MEMORY=unlimited

重新启动elasticsearch。

按照官方网页上推荐的步骤进行操作。

# rebalance無効化、これでshardsの自動調整が止める
$ curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "none"
    }
}'

# elasticsearch再起動
$ sudo service elasticsearch restart

# rebalance有効化
$ curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "all"
    }
}'

# head pluginでshardsの調整できたことを確認

确认交换已被禁用(mlockall为true)。

http://localhost::9200/_nodes/process?pretty

"process": {
  "refresh_interval_in_millis": 1000,
  "id": 1232,
  "max_file_descriptors": 65535,
  "mlockall": true
}

在做作业时遇到困难了

为什么Elasticsearch启动失败呢?
    查看了/var/log/elasticsearch/下的日志,但没有发现任何异常。怀疑是系统错误,于是查看了/var/log/messages日志。
Out of memory: Kill process 11560 (java) score 948 or sacrifice child
Killed process 11560 (java) total-vm:2949556kB, anon-rss:1929660kB, file-rss:13048kB

我查到的结果是,由于Elasticsearch使用了大量的内存,导致被OOM Killer杀死。

因为在具有2G物理内存的机器上将HEAP大小设置为1.5G,所以导致OOM Killer将其杀死。
建议将HEAP大小设置为推荐的物理内存的一半,即1G,这样就可以启动。

广告
将在 10 秒后关闭
bannerAds