ach*_*ers 3 job-scheduling cloud-foundry
我正在推送配置了 3g 内存的批处理应用程序,
applications:
- name: batch-app
memory: 3G
services:
- scheduler
buildpack: java_buildpack
Run Code Online (Sandbox Code Playgroud)
为批处理应用程序创建作业
cf create-job batch-app job-name ".java-buildpack/open_jdk_jre/bin/java org.springframework.boot.loader.JarLauncher"
Run Code Online (Sandbox Code Playgroud)
然后按如下方式安排作业:
cf schedule-job job-name "30 * ? * *"
Run Code Online (Sandbox Code Playgroud)
现在,每个计划的作业执行都会失败,并出现以下错误:
2018-10-20 [APP/TASK/612f1b80] [OUT] Exit status 137 (out of memory)
Run Code Online (Sandbox Code Playgroud)
同一个作业作为任务运行时会成功(即使内存少于清单中指定的内存):
cf run-task job-name ".java-buildpack/open_jdk_jre/bin/java org.springframework.boot.loader.JarLauncher" --name "manual" -m 2GB
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
现在这是可能的。如果您使用的是 Scheduler 版本 1.2.33+,则 Scheduler API 支持计划作业以及为计划任务定义内存和磁盘限制的功能。
请参阅发行说明。
请注意,对于 Scheduler v1.2.33+,API 支持此功能,但相应版本的 cf cli 调度程序插件不支持。您至少需要 cf cli 调度程序插件 1.3 版才能支持通过 cli 更改这些值。
您可以在此处从 Tanzu Network下载最新的 cf cli 插件。然后使用 来安装插件cf install-plugin -f path/to/download/scheduler-for-pcf-cliplugin-macosx64-binary-1.4.0-build.2。
--memory安装最新的插件后,您可以创建作业并使用和标志设置限制--disk。
例如:
cf create-job smallest-app say-hi 'echo "Hello World!"' --disk 512M --memory 128M
Run Code Online (Sandbox Code Playgroud)
之后,您可以运行cf run-job example查看排队的作业。您也可以像平常一样使用cf schedule-jobor 。cf run-job
我相信较新的调度程序 cf cli 插件也应该适用于 1.2.33+ 版本,但如果您遇到问题。curl使用发送请求的过程应该仍然有效。
这是安排作业的命令,详细信息请参见https://docs.pivotal.io/scheduler/1-2/api/#create-job:
curl -i -X POST https://scheduler.run.example.com/jobs?app_guid=$(cf app your-app --guid) \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H "Authorization: $(cf oauth-token)" \
-d "{ \
\"command\": \"echo 'hi'\", \
\"disk_in_mb\": 1024, \
\"memory_in_mb\": 1024, \
\"name\": \"example\" \
}"
Run Code Online (Sandbox Code Playgroud)
https://scheduler.run.example.com您的调度程序的位置在哪里。这可以分解为https://scheduler.<system-domain>,其中system-domain是您的基础安装所在的域。
如果运行cf api,您将看到 API URL。系统域是 后的部分https://api.。
例如:
$ cf api
api endpoint: https://api.run.example.com
api version: 2.145.0
Run Code Online (Sandbox Code Playgroud)
在此示例中,“run.example.com”是我的系统域,因此https://scheduler.run.example.com也是我的调度程序 URL。
如果您使用的是1.2.33之前的Scheduler版本,则不可能。旧版本的 Scheduler 不支持自定义内存或磁盘设置。不幸的是,计划的作业也不使用应用程序的内存限制。它使用您基础上设置的默认内存限制,就像您不设置内存限制一样,通常为 1G。
您可以通过多种方式解决这个问题。
您可能还会发现这些API 文档很方便。
| 归档时间: |
|
| 查看次数: |
1890 次 |
| 最近记录: |