网站有收录但是没排名,企业网站建设立项报告,公司注册资金最低是多少,旅游网网站建设方案因为流量比较大#xff0c; 导致ES线程数飙高#xff0c;cpu直往上窜#xff0c;查询耗时增加#xff0c;并传导给所有调用方#xff0c;导致更大范围的延时。如何解决这个问题呢#xff1f;
ES负载不合理#xff0c;热点问题严重。ES主集群一共有几十个节点#xff0…因为流量比较大 导致ES线程数飙高cpu直往上窜查询耗时增加并传导给所有调用方导致更大范围的延时。如何解决这个问题呢
ES负载不合理热点问题严重。ES主集群一共有几十个节点有的节点上部署的shard数偏多有的节点部署的shard数很少导致某些服务器的负载很高每到流量高峰期就经常预警。 ES线程池的大小设置得太高导致cpu飙高。我们知道设置ES的threadpool一般将线程数设置为服务器的cpu核数即使ES的查询压力很大需要增加线程数那最好也不要超过“cpu core * 3 / 2 1”。如果设置的线程数过多会导致cpu在多个线程上下文之间频繁来回切换浪费大量cpu资源。 shard分配的内存太大100g导致查询变慢。我们知道ES的索引要合理分配shard数要控制一个shard的内存大小在50g以内。如果一个shard分配的内存过大会导致查询变慢耗时增加严重拖累性能。 string类型的字段设置了双字段既是text又是keyword导致存储容量增大了一倍。会员信息的查询不需要关联度打分直接根据keyword查询就行所以完全可以将text字段去掉这样就能节省很大一部分存储空间提升性能。 ES查询使用filter不使用query。因为query会对搜索结果进行相关度算分比较耗cpu而会员信息的查询是不需要算分的这部分的性能损耗完全可以避免。 节约ES算力将ES的搜索结果排序放在会员系统的jvm内存中进行。 增加routing key。我们知道一次ES查询会将请求分发给所有shard等所有shard返回结果后再聚合数据最后将结果返回给调用方。如果我们事先已经知道数据分布在哪些shard上那么就可以减少大量不必要的请求提升查询性能。