大IO操作引起ksearch性能波动的问题分析

1. log 分析

主要是影响了系统cache,读log文件导致searcher的mmap内存被swap到硬盘,引起超时。侧重于IO层面


2. 大log文件 删除

主要是kernel整理硬盘快,进入了内核态,而且执行时间较长;导致用户态的searcher操作发生堵塞,引起超时。侧重于CPU和锁层面。


merge分发query给两行search是RR方式,一台search的超时,导致merge链接发生堵塞,从而影响了对所有列的服务,最终导致大范围超时。


解决方法:

总体应该是个链式反应,search单机的io操作影响了这台search的服务能力;merge跟search之间走的kfc,query在两行中round-robin分发,一台search慢就导致merge链接堆积,进而影响了merge对其他列的服务。

可以考虑在query分发时做负载均衡,这个涉及到kfc层面,有难度;或者io操作时,直接把这台search kill掉,另一台search完全可以扛得住流量。现在线上运维脚本,在做log清理,或其他大io操作时,都是把search下线的。


你可能感兴趣的:(负载均衡,IO,kill,search,query,merge)