在索引数据时在 ElasticSearch 数据节点中进行奇怪的大量读取
weird massive read in ElasticSearch Data node while indexing data
目前我正在将大量数据索引到 ElasticSearch 节点中。一开始还挺快的,大概过了1天,就转的特别慢了。我去了其中一个数据节点,键入 iotop:
Total DISK READ: 30.62 M/s | Total DISK WRITE: 1258.86 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
3951 be/4 elastics 1580.54 K/s 0.00 B/s 0.00 % 99.99 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3943 be/4 elastics 2.93 M/s 2.39 K/s 0.00 % 99.62 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3950 be/4 elastics 1434.83 K/s 0.00 B/s 0.00 % 99.42 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3941 be/4 elastics 2.48 M/s 46.98 K/s 0.00 % 99.11 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3939 be/4 elastics 3.86 M/s 7.96 K/s 0.00 % 99.01 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3944 be/4 elastics 3.25 M/s 9.55 K/s 0.00 % 98.91 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3942 be/4 elastics 3.41 M/s 82.81 K/s 0.00 % 98.13 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3945 be/4 elastics 3.49 M/s 81.22 K/s 0.00 % 97.77 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3940 be/4 elastics 3.06 M/s 15.92 K/s 0.00 % 97.58 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3938 be/4 elastics 3.13 M/s 121.83 K/s 0.00 % 96.40 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3953 be/4 elastics 1567.80 K/s 44.59 K/s 0.00 % 83.50 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3952 be/4 elastics 542.24 K/s 667.25 K/s 0.00 % 71.46 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
所以我想知道为什么磁盘读取如此之高而写入如此之低(我是 运行 200 个并行进程,每 2 或 3 秒该进程将执行一次批量索引大小为 800 的操作)。
PS:每盒32G内存,m3.2xlarge
有什么想法吗?
谢谢!
大量磁盘读取的一个可能原因是合并的行为
Elasticsearch 做的段。在此期间合并旧的内容
段被读取并组合成一个更大的段。
您可以在此处的 Elasticsearch 指南中阅读有关合并的更多信息:
http://www.elastic.co/guide/en/elasticsearch/guide/current/merge-process.html
出于合并方面的性能考虑,我建议采用
看看这个博客 post:
http://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html#segments-and-merging
目前我正在将大量数据索引到 ElasticSearch 节点中。一开始还挺快的,大概过了1天,就转的特别慢了。我去了其中一个数据节点,键入 iotop:
Total DISK READ: 30.62 M/s | Total DISK WRITE: 1258.86 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
3951 be/4 elastics 1580.54 K/s 0.00 B/s 0.00 % 99.99 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3943 be/4 elastics 2.93 M/s 2.39 K/s 0.00 % 99.62 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3950 be/4 elastics 1434.83 K/s 0.00 B/s 0.00 % 99.42 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3941 be/4 elastics 2.48 M/s 46.98 K/s 0.00 % 99.11 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3939 be/4 elastics 3.86 M/s 7.96 K/s 0.00 % 99.01 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3944 be/4 elastics 3.25 M/s 9.55 K/s 0.00 % 98.91 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3942 be/4 elastics 3.41 M/s 82.81 K/s 0.00 % 98.13 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3945 be/4 elastics 3.49 M/s 81.22 K/s 0.00 % 97.77 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3940 be/4 elastics 3.06 M/s 15.92 K/s 0.00 % 97.58 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3938 be/4 elastics 3.13 M/s 121.83 K/s 0.00 % 96.40 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3953 be/4 elastics 1567.80 K/s 44.59 K/s 0.00 % 83.50 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
3952 be/4 elastics 542.24 K/s 667.25 K/s 0.00 % 71.46 % java -Xms16g -Xmx16g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseC~t.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
所以我想知道为什么磁盘读取如此之高而写入如此之低(我是 运行 200 个并行进程,每 2 或 3 秒该进程将执行一次批量索引大小为 800 的操作)。
PS:每盒32G内存,m3.2xlarge
有什么想法吗?
谢谢!
大量磁盘读取的一个可能原因是合并的行为 Elasticsearch 做的段。在此期间合并旧的内容 段被读取并组合成一个更大的段。
您可以在此处的 Elasticsearch 指南中阅读有关合并的更多信息: http://www.elastic.co/guide/en/elasticsearch/guide/current/merge-process.html
出于合并方面的性能考虑,我建议采用 看看这个博客 post: http://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html#segments-and-merging