ES建索引突然变的超级慢

2018-08-25  本文已影响402人  尧字节

背景

昨天周五的时候,突然发现Es的建索引插件,执行后没有返回,后来等待好久,才返回,整个建索引耗时70多秒,平时都是2万+/秒,差异太大了,简直就算是无法工作。

目前环境是这样子:es 6.3.1 版本,一共 36个主机,72个节点即一个主机上部署两个节点,这是我们另外一套的es集群。

找问题

1)首先怀疑是集群问题,去查了下集群,绿色的正常。
2)功能验证:新建个测试的index,没问题,插入数据正常。
4)各种网络ping、telnet测试,ok的,网络没问题。
5)日志检查,客户端没有报错,服务器端有日志:

stop throttling indexing: numMergesInFlight=5, maxNumMerges=6 

这种问题是因为段合并的速度敢不上建索引的速度引起的,不过我看了下时间对不上。
在此吐槽下,es6.3.1 怎么无法更改合并段的最大速率限制,如果更改不了那么段合并慢的话,还怎么提升建索引性能,还不能不合并,有知道方法的告知。
后面还有个错误:

java.nio.channels.ClosedChannelException: null
        at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source) ~[?:?] 

看起来就是es服务器端发送客户端的时候抛异常了,我怀疑是超时被客户端断开了,本来想改超时参数的,查了半天也没找到,放弃。

6)我在想肯定有一台主机或一个节点造成的影响整个集群慢,但是没有好的办法找到。
7)实在是没招了,遂叫维护的同事重启,结果半天有shard没有分配,去那台主机看了下,好像io挺严重,去索引目录看最新时间的索引目录(同事这招厉害),进入到index目录底下,ls卡死,基本判定是磁盘坏了,后面主机都无法登陆了。

至于上面建索引只索引没问题,是因为我建的索引用默认的shard,没有达到一个分配一个shard,这样刚好错过了有问题的主机造成的,以后测试还是多少个节点建多少个shard,可以准确测试出哪里有问题。

上一篇 下一篇

猜你喜欢

热点阅读