📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

简而言之,当 Elasticsearch 中并发运行的作业数量达到最大值时,就会出现此错误。设置此限制是为了防止系统过载。要解决此问题,你可以增加 Elasticsearch 配置文件中的 ‘xpack.ml.max_open_jobs’ 设置,或者通过确保不再需要的作业被关闭或删除来更好地管理你的作业。此外,如果你的集群设置允许,可以考虑将作业分散到多个节点上。

日志上下文 #

日志 “max running job capacity [” + maxAllowedRunningJobs + “] reached” 的类名是 AutodetectProcessManager.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解的人参考:

AutodetectCommunicator create(JobTask jobTask; Job job; AutodetectParams autodetectParams; BiConsumerhandler) {
 // 正在关闭的作业可能仍在使用 MachineLearning.AUTODETECT_THREAD_POOL_NAME 中的部分或全部线程
 // 而开放作业也会使用这些线程;因此在判断是否有足够线程可用时,也要将它们包括在内。
 int currentRunningJobs = processByAllocation.size();
 if (currentRunningJobs > maxAllowedRunningJobs) {
 throw new ElasticsearchStatusException("max running job capacity [" + maxAllowedRunningJobs + "] reached";
 RestStatus.TOO_MANY_REQUESTS);
 }  String jobId = jobTask.getJobId();
 notifyLoadingSnapshot(jobId; autodetectParams);