--- title: "达到最大运行作业容量 maxAllowedRunningJobs - 如何解决此 Elasticsearch 异常" date: 2026-03-21 lastmod: 2026-03-21 description: "当 Elasticsearch 中并发运行的最大作业数量达到限制时,会出现此错误。本文介绍如何解决 maxAllowedRunningJobs 达到上限的异常。" tags: ["异常处理", "机器学习", "作业管理", "资源限制"] summary: "简而言之,当 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); " --- 简而言之,当 Elasticsearch 中并发运行的作业数量达到最大值时,就会出现此错误。设置此限制是为了防止系统过载。要解决此问题,你可以增加 Elasticsearch 配置文件中的 'xpack.ml.max_open_jobs' 设置,或者通过确保不再需要的作业被关闭或删除来更好地管理你的作业。此外,如果你的集群设置允许,可以考虑将作业分散到多个节点上。 ## 日志上下文 日志 "max running job capacity [" + maxAllowedRunningJobs + "] reached" 的类名是 [AutodetectProcessManager.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解的人参考: ```java 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); ```