简而言之,当 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);





