当前位置: 首页 > 知识库问答 >
问题:

带有多个Elasticsearch群集的Spring Boot启动速度非常慢

单于帅
2023-03-14

我有Spring启动应用程序与三个弹性搜索群集(ES v6.4.2)配置。application.properties文件如下(我为每个集群配置了三个主节点,但为了简单起见,这里显示了一个):

# Cluster 1
spring.data.elasticsearch.cluster-one.cluster-name=<cluster-1-name>
spring.data.elasticsearch.cluster-one.cluster-nodes=<ip-cluster-1-master-node>:9300

# Cluster 2 
spring.data.elasticsearch.cluster-two.cluster-name=<cluster-2-name>
spring.data.elasticsearch.cluster-two.cluster-nodes=<ip-cluster-2-master-node>:9300

# Cluster 3 
spring.data.elasticsearch.cluster-three.cluster-name=<cluster-3-name>
spring.data.elasticsearch.cluster-three.cluster-nodes=<ip-cluster-3-master-node>:9300

spring.data.elasticsearch.repositories.enabled=true

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration

对于每个集群,我都有一个单独的配置类,在其中设置TransportClient和ElasticsearchTemplate。

现在,当我在本地计算机上运行所有三个集群的情况下本地启动应用程序时,应用程序会正常启动。但是,当我使用三个独立的远程集群将应用程序部署到测试环境时,启动过程需要20分钟。它还需要为第三个集群加载Elasticsearch插件。下面是日志输出的摘录:

2019-09-10 00:55:57.607  INFO 27505 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2897 ms
2019-09-10 00:55:57.971  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : no modules loaded
2019-09-10 00:55:57.972  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
2019-09-10 00:55:57.972  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019-09-10 00:55:57.972  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019-09-10 00:55:57.972  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
2019-09-10 00:55:57.973  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019-09-10 00:55:59.785  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : no modules loaded
2019-09-10 00:55:59.785  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
2019-09-10 00:55:59.785  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019-09-10 00:55:59.785  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019-09-10 00:55:59.785  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
2019-09-10 00:55:59.786  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019-09-10 01:18:30.484  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : no modules loaded
2019-09-10 01:18:30.485  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
2019-09-10 01:18:30.485  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019-09-10 01:18:30.485  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019-09-10 01:18:30.485  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
2019-09-10 01:18:30.485  INFO 27505 --- [           main] o.elasticsearch.plugins.PluginsService   : loaded plugin [org.elasticsearch.transport.Netty4Plugin]

在这里,您可以看到第二个和第三个块加载插件之间的延迟超过20分钟。

当从测试环境中卷曲群集时,它们都是可访问的,并且没有延迟地响应。

延迟的原因可能是什么,或者我必须去哪里寻找?

是否有可能或建议只为所有三个集群加载一次Elasticsearch插件?如果有,我如何实现这一点?

编辑:

调试日志向我显示,主节点无法连接到数据节点:

org.elasticsearch.transport.ConnectTransportException: [data_node_6][<ip-of-data-node>:9300] connect_exception
[...]

2019-09-10 18:49:00.517 DEBUG 26219 --- [main] o.e.c.t.TransportClientNodesService      : failed to connect to discovered node [{data_node_6}{LKdxInfLSyqrGgSOXvTwFw}{YIhin3kpSNupEY1jBlHFVg}{<ip-of-data-node>}{<ip-of-data-node>:9300}{ml.machine_memory=33422729216, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}]

但是我的集群是在线的,并且在所有数据节点都存在的情况下处于绿色状态。所有节点都配置为网状VPN,端口9200和9300为节点之间的通信打开。

ES是否需要打开另一个端口进行通信?

共有1个答案

邹星火
2023-03-14

出现这个问题是因为我启用了集群嗅探(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html),它拾取集群中的所有数据节点,并通过主节点直接与它们通信。

由于我的群集配置为VPN,并且只有主节点可以从后端(位于VPN之外)访问,因此当从主节点获取内部VPN IP(非公共IP)时,后端无法与数据节点通信,因此连接失败。

所以我禁用了集群嗅探,现在一切都像预期的那样工作。

 类似资料:
  • 问题内容: 我正在尝试通过使用JAP和HIBERNATE向SQL Server 2008 R2插入一些数据。一切都“正常”,除了它非常慢。要插入20000行,大约需要45秒,而C#脚本大约需要不到1秒。 这个领域的任何资深人士都可以提供帮助吗?我会很感激。 更新:从下面的答案中得到了一些很好的建议,但仍然无法按预期工作。速度是一样的。 这是更新的persistence.xml: 这是更新的代码部分

  • 当你的 ES 集群发展到一定规模,单集群不足以应对庞大的在线索引量级,或者由于业务隔离需求,都有可能划分成多个集群。这时候,另一个问题就出来了:可能其中有一部分数据,被分割在两个集群里,但是还是需要一起使用的。如果是自己写程序,当然可以初始化两个对象,分别连接两个集群,得到结果集后再自行合并。但是如果用 Elastic Stack 的,Kibana 可不支持同时连接两个集群地址,这时候,就要用到

  • 问题内容: 我正在尝试通过使用JAP和HIBERNATE向SQL Server 2008 R2插入一些数据。一切都“正常”,除了它非常慢。要插入20000行,大约需要45秒,而C#脚本大约需要不到1秒。 这个领域的任何资深人士都可以提供帮助吗?我会很感激。 更新:从下面的答案中得到了一些很好的建议,但仍然无法按预期工作。速度是一样的。 这是更新的persistence.xml: 这是更新的代码部分

  • 问题内容: 我对SQL(Server2008)的较低层次的了解是有限的,现在我们的DBA对此提出了挑战。让我解释一下这种情况:(我已经提到一些明显的陈述,希望我是对的,但是如果您发现有问题,请告诉我)。 我们有一张桌子,上面放着人们的“法院命令”。创建表(名称:CourtOrder)时,我的创建方式如下: 然后,我将非聚集索引应用于主键(以提高效率)。我的理由是,这是一个唯一字段(主键),应该像我

  • 问题内容: 我正在尝试建立一个查询,该查询将找到所有用户文档(docType =用户),然后根据许多过滤器对其进行过滤。例如位置,性别,年龄等。过滤器是根据我正在构建的搜索功能上的用户输入来添加/删除的。 以下没有结果: 以下返回结果: 后者虽然返回结果,但从长远来看是行不通的,因为我可能想为年龄,性别等添加一个额外的过滤器,而且我似乎无法添加多个字段。如果我删除位置过滤器,则第一个查询有效。 问

  • 我正在尝试使用HttpUrlConnection POST方法使用multipart上传文件。文件上传正确,我收到了响应。但是当我跟踪进度时,它只是在1秒内给出所有进度,即使是文件。 这是我上传文件的代码: 任何帮助或解释,真的非常感谢。