在采集频率和采集数据量比较大的情况下,线上有时候会出现cpu占用非常高的情况,而且批量索引数据api请求延迟非常大怎么办?这个问题相信大家在线上经常也会遇到的。今天这篇文章我们来介绍下如何去解决?
分析原因:
CPU占用非常高的原因主要可能来自这几个方面:
1、线上业务系统比较繁忙 2、线上业务查询量比较大,索引量比较少 3、线上业务查询量比较小,索引量比较大 4、线上频繁进行refresh和flush 5、线上进行多aggregation
解决思路:
1、如果线上业务系统比较繁忙的时候,又需要进行索引,那这个时候考虑下分多个集群进行负载,只是索引的时候需要多份索引 2、检查下代码里面是否有可以优化的地方,例如不需要打分,是否缓存,同条件的查询,尽量考虑下使用filter进行过滤查询。 3、条件允许的情况下,也就是数据查询实时性要求不需要很高的时候,可以增大下refresh时间,例如:30秒 4、线上如果进行频繁aggregation的话,考虑下多集群和缓存,或者进行与计算处理。 5、升级下服务器的硬件配置,增大CPU核数和内存大小,磁盘使用ssd 6、考虑冷热架构。
还没有评论,来说两句吧...