【问题标题】:Limit the total number of tasks running at same time in spring cloud data flow?限制spring cloud数据流同时运行的任务总数?
【发布时间】:2018-05-25 11:47:18
【问题描述】:

我们每次启动一个spring cloud任务,都会启动一个新的jvm(java.exe),所以如果启动了25个任务,那么就会启动25个jvm。

我想知道如何同时限制所有任务的总数(为所有已部署的 jar 运行)?

假设我必须将一次运行的所有任务的总数限制为 25。SCDF 中是否有任何设置可以做到这一点?

请告诉我

【问题讨论】:

  • 我们在 PR 中有 spring-cloud-task#81 以防止同时启动相同的任务。有一些关于限制任务启动次数的讨论,无论它是否是同一个任务。无论如何,有关您编排任务的内容和方式的更多详细信息将很有用。
  • 我们在 SCDF 中创建多个任务(例如:任务 1、任务 2、任务 3),每个任务执行不同的功能。所以我们为上述任务分别准备了三个罐子。用户可以从 UI 启动这些任务,因此最终我们可能会以同时运行的大量并发任务结束,这可能会导致资源和内存问题。所以我们要限制同时运行的并发任务的总数。我已经看到很多关于这个的讨论,如果在数据流中添加可配置字段,我们可以使用它来设置它,那将会很棒。请告诉我
  • 还有是否可以对任务请求进行排队,以便在运行的并发任务总数小于我们设置的最大数量时运行任务

标签: spring spring-cloud-dataflow


【解决方案1】:

默认情况下 ma​​ximumTaskExecutions 为 20。您可以使用以下网址检查 runningExecutionCountma​​ximumTaskExecutionsvalue

http://localhost:9393/tasks/executions/current

本地机器

如果您使用 jar 文件在本地机器上运行 spring-cloud 数据流服务器,那么您需要传递如下参数。

java -jar spring-cloud-dataflow-server-<VERSION>.jar --spring.cloud.dataflow.task.platform.<PLATFORM-TYPE>.accounts.<ACCOUNT-NAME>.maximum-concurrent-tasks=<TASK-COUNT>

例如:

java -jar spring-cloud-dataflow-server-2.7.1.jar --spring.cloud.dataflow.task.platform.local.accounts.default.maximum-concurrent-tasks=1

KUBERNETES

如果你是在kubernetes平台上运行spring cloud server那么你需要更改Kubernetes task platforms的配置

  • 转到 src/kubernetes/server/server-config.yaml ,在正确的位置添加属性

    spring:
      cloud:
        dataflow:
          task:
            platform:
              <PLATFORM-TYPE>:
                accounts:
                  <ACCOUNT-NAME>:
                     maximum-concurrent-tasks: <TASK-COUNT>
    

例如:

spring:
  cloud:
    dataflow:
      task:
        platform:
          kubernetes:
            accounts:
              dev:
                maximum-concurrent-tasks: 10
              qa:
                maximum-concurrent-tasks: 30
  • 然后应用配置kubectl apply -f src/kubernetes/server/server-config.yaml
  • 然后重启 spring-cloud-dataflow 服务器。

注意:

  • PLATFORM-TYPE 是指当前支持的部署程序之一:localcloudfoundrykubernetes
  • ACCOUNT-NAME 是已配置平台帐户的名称(默认,如果没有明确配置帐户)。

参考

【讨论】:

    【解决方案2】:

    在较新版本的 SCDF 中,有一个 deployer 属性可以限制并发任务执行的数量。

    deployer.<appName>.kubernetes.maximumConcurrentTasks
    

    默认值为 20。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2018-11-27
      • 2017-04-25
      • 2020-07-13
      相关资源
      最近更新 更多