我们有一个应用程序,每秒向 ES 集群添加数千个文档。每次滚动更新要写入的索引并开始写入新索引时,都会收到以下错误,这些错误不允许在大约 1 分钟内引入文档。在那 1 分钟之后,一切都恢复正常,直到我们再次滚动索引。
[WARN ][o.e.c.s.MasterService ] [NODE_NAME_1] took [28.3s], which is over [10s], to compute cluster state update for [put-mapping[_doc, _doc, ...
[DEBUG][o.e.a.a.i.m.p.TransportPutMappingAction] [NODE_NAME_1] failed to put mappings on indices [[[INDEX_1/SOME_ID]]], type [_doc]
org.elasticsearch.cluster.metadata.ProcessClusterEventTimeoutException: failed to process cluster event (put-mapping) within 30s
at org.elasticsearch.cluster.service.MasterService$Batcher.lambda$onTimeout$0(MasterService.java:143) [elasticsearch-7.5.2.jar:7.5.2]
at java.util.ArrayList.forEach(ArrayList.java:1507) [?:?]
at org.elasticsearch.cluster.service.MasterService$Batcher.lambda$onTimeout$1(MasterService.java:142) [elasticsearch-7.5.2.jar:7.5.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:703) [elasticsearch-7.5.2.jar:7.5.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:830) [?:?]
在第一行中,我在末尾加了省略号,因为它实际上相当大,这里是我们看到的图像(如图所示,行突然结束):
你知道这些错误消息是关于什么的吗?
我们是否可能因为集群状态太大而看到这些消息?这是否意味着我们有太多的分片或节点?
谢了。
注:
当ES无法应对大集群状态时,会出现此错误,并且更新集群状态的默认超时为10秒,但如您的错误消息中所述,它花了大约30秒。
集群状态在主节点上计算,然后通过MasterService发布Diff(节点存在)或整个集群状态(如果新节点加入集群)。Elasticsearch的java
类。
您有大量的分片信息,这些信息以集群状态维护,您的主节点无法在默认的 10 秒内
计算状态。
下面是来自Elasticsearch类org.elasticsearch.cluster.service.ClusterApplierService
的代码,它尝试更新集群状态并引发此异常。
try {
UpdateTask updateTask = new UpdateTask(config.priority(), source, new SafeClusterApplyListener(listener, logger), executor);
if (config.timeout() != null) {
threadPoolExecutor.execute(updateTask, config.timeout(),
() -> threadPool.generic().execute(
() -> listener.onFailure(source, new ProcessClusterEventTimeoutException(config.timeout(), source))));
} else {
threadPoolExecutor.execute(updateTask);
}
}
您可以检查异常类<code>org.elasticsearch.cluster.metadata。ProcessClusterEventTimeoutException代码如下
public ProcessClusterEventTimeoutException(TimeValue timeValue, String source) {
super("failed to process cluster event (" + source + ") within " + timeValue);
}
您可以查看上面的代码,这将帮助您更好地理解问题。
解决问题的一些建议:
cluster.publish.info_timeout = 10s default(maybe this can work)
cluster.publish.timeout = 30s by default
问题内容: SQL: 用户索引: 个人资料索引 解释 : 上面的查询大约需要0.1221 我怎样才能使其运行更快? 问题答案: 我删除了此查询,因此搜索完成后不会显示总结果数。 似乎是临时解决方案,甚至是永久解决方案。
我正在尝试训练一个模型,在我看来,与其他数据集相比,该模型花费的时间太长,因为完成一个历元需要大约1小时和20分钟。我认为问题是因为数据集没有存储在ram上,但我不确定这一点。 代码如下: 型号: 顺序模型 2个卷积层,32个神经元,激活=relu 1个卷积层,64个神经元,激活=relu 平整和致密层,激活=relu 退出0.5 具有sigmoid激活的输出层(致密) Adam optimize
我试图创建一个Hazelcast服务项目,其中我将订阅一个RDBMS(Oracle DB 12c)数据存储,使用反射动态创建一个POJO/JavaBean,然后解析JavaBean对象以映射JDBC ResultSet作为结果行值放入JavaBean对象,并将这些映射对象加载到分布式映射中。 我检查了两个表的数据量,我试图从这两个表加载在Hazelcast IMap中,它低至0.0625和0.03
问题内容: 我试图在Java中找到斐波那契数列的总和,但是运行时间太长了(或者应该吗?)。每当我使用40以上的整数时,这都会减慢速度。 注意:在50时,返回的负值使我感到困惑。 有什么建议吗? 问题答案: 对于,您的递归调用会两次调用自身。这些调用中的每一个都可以进一步递归。方法调用的总数缩放为,并且是一个非常大的数字。这种糟糕的缩放比例反映了以下事实:简单的递归方法最终会不必要地多次重新计算相同
我将cxf库用于web服务客户端。 当响应延迟了大约5秒时,cxf需要大约20秒来返回响应。ws返回33912长响应。 不过,客户对快速响应没有问题。 我找不到问题所在。我测试了wsendpoint,它在8秒内返回最大值。但cxf客户端有时需要30-50秒。 我打开了调试日志,这两行之间需要9秒 2018-01-11 17:17:14.022调试10492--[nio-8086-exec-6]o.
计算一个函数执行的时间。 使用 console.time() 和 console.timeEnd() 来测量开始和结束时间之间的差,以确定回调执行的时间。 const timeTaken = callback => { console.time('timeTaken'); const r = callback(); console.timeEnd('timeTaken'); ret