匿名用户elasticsearch 里没有什么数据,但请求速度特别慢,可能是什么原因?
elasticsearch 里没有什么数据,但请求速度特别慢,可能是什么原因?
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
匿名用户elasticsearch 里没有什么数据,但请求速度特别慢,可能是什么原因?
elasticsearch提供了非常灵活的搜索条件给我们使用,如果使用不当,可能也会为我们带来了潜在的风险,因为影响查询性能的因素很多很多。
我们有时候写查询,为了图方遍,经常使用通配符*来查询,这有可能会匹配到多个索引,由于索引下分片太多,超过了集群中的核心数。就会在搜索线程池中造成排队任务,从而导致搜索拒绝。
另一个常见原因是磁盘 I/O 速度慢,导致搜索排队或在某些情况下 CPU 完全饱和。
除了文件系统缓存,Elasticsearch 还使用查询缓存和请求缓存来提高搜索速度。 所有这些缓存都可以使用搜索请求进行优化,以便每次都将某些搜索请求路由到同一组分片,而不是在不同的可用副本之间进行交替。这将更好地利用请求缓存、节点查询缓存和文件系统缓存。Es默认会在内存使用75%时发生FullGC ,做好主机和节点的监控同样重要。
优化方法
1、根据查询时间段动态计算索引
elasticsearch支持同时查询多个索引,为了提高查询效率,避免使用通配符查询,我们可以计算枚举出所有的目标索引,一般es的数据都是按时间分索引,我们可以根据前端传入的时间段,计算出目标索引。
2、控制分片数量
分片的数量和节点和内存有一定的关系。
最理想的分片数量应该依赖于节点的数量。 数量是节点数量的1.5到3倍。
每个节点上可以存储的分片数量,和堆内存成正比。官方推荐:1GB 的内存,分片配置最好不要超过20。
3、为你的索引配置索引模板
在低版本的es中默认的分片是5个,在高版本中改成了1我们需要根据索引的索引量来动态调整分片数量,这里推荐设置一个默认匹配规则,将优先级设置高一些(ps:order高的会覆盖order低的模板),避免查询扫描过多的分片,合理利用集群资源。
参考
http://www.360doc.com/content/21/1224/14/13042814_1010145822.shtml
评论
有用 0
墨值悬赏