`

Elasticsearch 2.4.2 低延迟使用记录

阅读更多

 

 编写不易,转载请注明( http://shihlei.iteye.com/blog/2423848 )!

 

一 概述

(一直没有升级ES版本,这里只记录使用这一年多的一些优化结论)

 

Elasticsearch2.4.2  做索引库,提供低延迟的查询需求。

  1. 业务规模:docuement 规模 90万,大概200M,不算大。
  2. 查询特点:都是terms查询,没有聚合查询。客户端使用的是jest 基于http查询es。
  3. 性能:3000qps 并不大,tp 999 暂未统计

二 架构

  (1)节点类型 

  1.       master node:协调,存储元数据,负载和内存占用不高,但建议独立部署。
  2.       data node:计算,数据存储,主要负载节点,cpu,内存都要消耗。建议选好点的机器,内存大点的机器,并且机器配置尽量一样,方便负载均衡。
  3.       client node:请求转发,负载均衡节点,主要用于接入和分配查询合并。(我们的场景,没有合并查询,所以基本没有负载)

  (2)架构建议:数据量小,查询少可以混合使用。但建议独立部署。

  1.       master node:3台,配置不用太高,但独立部署,重启维护方便。
  2.       data node:n 台,cpu ,内存都好点,有建议ssd,视情况吧。
  3.       client node:建议加入,统一入口,1~2台,cpu好点,有合并的话,内存大点。  

三 节点配置

  (1)查询队列:threadpool.search

 

      (a)master: 小集群数据量不大,添加修改频繁,基本不用改配置。

 

      (b)datanode:计算,由于tcp同clientnode 连接,我们使用的是 fixed 类型,队列大小需要慎重

threadpool.search.type: fixed
threadpool.search.size: 100            # (核数 * 3)/2 +1 如果cpu使用率没有到 70% 以上,建议调大,提高系统的吞吐量  
threadpool.search.queue_size: 1000    

     

(c)clinetnode:我们无合并结果需求,只提供接入和datanode负载均衡的能力。cpu内存消耗非常低,避免线程数成为系统瓶颈,所以选择cached类型。

# Cached threadpool
threadpool:  
	generic:  
		keep_alive: 200ms

 

  (2)开启交换分区锁定:

        bootstrap.mlockall: true

 

        我们索引才几百M,最好都内存计算和fetch,同时避免内存不够是es的换出,性能确实有所提高,慢查询减少到原来的1/3;

 

  (3)g1 gc :

      查询请求多的时候,观察系统日志,出现gc 的警告,时间大于1s,这个暂停太长,我们在data node 上更换了g1 gc

 

      要求: 需要高于JDK 8u40,版本,该版本之前改G1会造索引失效

 

      修改方法:bin/elasticsearch.in.sh

 

      调整为:

          # Add gc options. ES_GC_OPTS is unsupported, for internal testing

          if [ "x$ES_GC_OPTS" = "x" ]; then
          #  ES_GC_OPTS="$ES_GC_OPTS -XX:+UseParNewGC"
          #  ES_GC_OPTS="$ES_GC_OPTS -XX:+UseConcMarkSweepGC"
          #  ES_GC_OPTS="$ES_GC_OPTS -XX:CMSInitiatingOccupancyFraction=75"
          #  ES_GC_OPTS="$ES_GC_OPTS -XX:+UseCMSInitiatingOccupancyOnly"

 
          ES_GC_OPTS="$ES_GC_OPTS -XX:+UseG1GC"
          ES_GC_OPTS="$ES_GC_OPTS -XX:MaxGCPauseMillis=200"

          fi

 

  (4)discover

      discovery.zen.ping.unicast.hosts: 建议配置master ip,master单独部署,不常重启影响。

 

四 索引库配置

    1)shard 数据量在100万左右(多了没测),没有聚合的场景,单shard比多shard效果好。

    2)preference查询参数可以将查询打在一个分配上,用于利用查询缓存,方便相似查询提升效率。

 

    其他:

     rountintKey:由于curd都需要携带,需要结合业务考虑是否适合使用。

 

其他:

  (1)Jest:集群发现代码:

      .discoveryEnabled(true)

      .discoveryFrequency(10l, TimeUnit.SECONDS)  // 需要设置好时间,es维护会影响这里的处理

      .discoveryFilter("type:arbitrary")

 

   public static JestClient jestClient() {
        JestClientFactory factory = new JestClientFactory();
        factory.setHttpClientConfig(
                new HttpClientConfig
                        .Builder(Arrays.asList("http://localhost:9200"))
                        .multiThreaded(true)
                        //一个route 默认不超过2个连接  路由是指连接到某个远程注解的个数。总连接数=route个数 * defaultMaxTotalConnectionPerRoute
                        .defaultMaxTotalConnectionPerRoute(10)
                        // 默认总连接数不超过20, 我们没有并发问题
                        .maxTotalConnection(30)
                        .connTimeout(10000)
                        .readTimeout(10000)
                        //客户端发现
                        .discoveryEnabled(true)
                        .discoveryFrequency(10l, TimeUnit.SECONDS)
                        .discoveryFilter("type:arbitrary")
                        .build()
        );
        return factory.getObject();
    }

 

 

 

分享到:
评论

相关推荐

    elasticsearch-2.4.2

    在使用 Elasticsearch 2.4.2 时,需要注意以下几点: 1. 确保硬件资源充足,因为 Elasticsearch 需要足够的内存来维持高效运行。 2. 优化配置参数,如 heap size 和 node settings,以适应具体环境需求。 3. 定期...

    elasticsearch-2.4.2.tar.gz

    Elasticsearch 2.4.2 版本是该软件的一个稳定版本,提供了许多功能和改进。 1. 分布式搜索:Elasticsearch的核心特性之一就是分布式搜索。这意味着它可以将索引分片存储在多台服务器上,使得搜索和数据处理能够并行...

    elasticsearch-2.4.2.rar

    elasticsearch-2.4.2安装包,解压后运行其中 bin 目录的 elasticsearch.bat

    Elastic Search搭建使用教程.pdf(内含ElasticSearch教程权威指南)

    Elasticsearch是一款基于Lucene的开源搜索引擎,它使用RESTful接口进行数据操作,数据以JSON格式存储。Elasticsearch以其高效的全文搜索功能,实时数据处理能力,以及易于使用的特性,在众多企业中得到了广泛应用,...

    elasticsearch安装和使用

    使用`/opt/es/essoftware/elasticsearch-2.3.4/bin/plugin install mobz/elasticsearch-head`命令安装,然后通过`http://cm3:9200/_plugin/head/`访问。 2. Marvel和Kibana是Elasticsearch的数据监控和可视化工具。...

    Elasticsearch 开机自启脚本

    `start` 用于启动Elasticsearch,这里使用 `su` 命令切换到指定的Elasticsearch用户(例如 `es-admin`),然后进入Elasticsearch的安装目录并执行 `bin/elasticsearch` 文件以后台模式启动服务。`stop` 通过查找并杀...

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    最新版本springboot集成elasticsearch

    一般来说我们开发Elasticsearch会选择使用集成springboot,在网上找的springboot集成elasticsearch文章几乎都是extends ElasticsearchRepository的方式来实现。但是新版本ElasticsearchRepository里的方法基本上已经...

    elasticSearch-8.14.1-windows

    - **服务安装**:使用`elasticsearch-service.bat`将Elasticsearch安装为Windows服务,便于后台自动启动和管理。 - **安全考虑**:Elasticsearch默认是不安全的,建议在生产环境中启用安全性插件,并配置用户认证和...

    es-head Elasticsearch的可视化操作插件

    es-head是一个针对Elasticsearch的可视化操作插件。它提供了一个便捷的操作工具,可以连接Elasticsearch搜索引擎,并提供可视化的操作页面,对Elasticsearch进行各种设置和数据检索功能的管理。 es-head 插件可以在...

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    根据提供的文件信息,我们可以推断出本篇文章将围绕Elasticsearch 6.2.2版本进行详细介绍,包括其下载方式、主要功能特性以及在实际应用中的常见用途。 ### Elasticsearch简介 Elasticsearch是一款基于Lucene的...

    ES查询客户端,elasticsearch可视化工具 elasticsearch查询客户端

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...

    基于.netcore搜索封装ElasticSearch.zip

    7. **监控与日志**: 对Elasticsearch的操作应进行日志记录,并可以使用Elasticsearch自身的监控功能来跟踪集群的健康状况和性能指标。 8. **弹性伸缩**: 由于Elasticsearch天生支持分布式,因此当数据量或访问量...

    ES客户端+谷歌浏览器插件+Multi-Elasticsearch-Head

    使用Multi-Elasticsearch-Head,管理员或开发者可以轻松地查看和对比不同集群的状态、性能指标以及数据分布,这对于分布式系统监控和故障排查特别有用。它通常提供了一种直观的方式来查看索引结构、执行查询语句、...

    基于SpringBoot+elasticsearch的操作项目,包含各种es的操作(插入记录、精准搜索、模糊搜索、聚合查询等)

    基于SpringBoot+elasticsearch的操作项目,包含各种es的操作(插入记录、精准搜索、模糊搜索、聚合查询等) 基于SpringBoot+elasticsearch的操作项目,包含各种es的操作(插入记录、精准搜索、模糊搜索、聚合查询等...

    Windows版本(8.11)ElasticSearch、elasticsearch-head、kibana、IK分词

    注意,Elasticsearch默认使用9200端口,如果该端口已被占用,需要修改配置文件`config/elasticsearch.yml`。 **Kibana 8.11.3** Kibana是Elasticsearch的数据可视化工具,用于创建仪表板、图表和数据视图。8.11.3...

    flink-es7:为了使用Elasticsearch连接器,使用构建自动化工具(如Maven或SBT)的两个项目和带有SQL

    flink-es7:为了使用Elasticsearch连接器,使用构建自动化工具(如Maven或SBT)的两个项目和带有SQL

    elasticSearch(ES)最新版 ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...

    elasticsearch 8.11.3 windows安装包

    Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,...

    elasticsearch7.14.0.zip

    这个压缩包包含了针对Windows和Linux操作系统的安装包,便于在不同环境下部署和使用Elasticsearch。此外,它还提供了多个插件的源码,如IK分词器、Pinyin插件和HanLP自然语言处理库,这些插件为Elasticsearch增加了...

Global site tag (gtag.js) - Google Analytics