调试任务
任务启动了吗?
要确定您的任务是否已正确执行,请转到 UI 的“任务执行”页面,或在 shell 中键入 task execution list
。找到任务启动的任务执行条目。
下图显示了如何处理任务启动错误
如果任务启动失败,需要检查什么
如果任务启动失败
- 确保使用的是特定发行版本的最新 GA。
- 确保您选择的平台至少满足最低支持版本。
- 在 SCDF 中启动任务或批处理应用程序之前,请确保该应用程序已作为独立应用程序成功执行。 在继续之前,请参阅调试批处理应用程序。
SCDF 负责启动任务。 任务启动失败消息通常可以在 SCDF 应用程序日志中找到。
平台
本节介绍如何对特定平台上的问题进行故障排除
- 本地
- Cloud Foundry
- Kubernetes
本地
本节介绍如何对在本地运行的应用程序进行故障排除
下图显示了如何处理本地任务启动错误
您可以逐个应用程序地检查应用程序日志文件。 要将所有应用程序的日志聚合到一个文件中,可以设置 inheritLogging=true
部署程序属性。 有关更多信息,请参阅“是否可以将本地部署聚合到单个日志中?”,以及有关如何启用更多日志输出的信息,请参阅“如何为平台部署启用 DEBUG 日志?”。
您可以通过设置 debugPort
部署程序属性来启用使用 JDWP 调试应用程序。 有关更多信息,请参阅“如何远程调试已部署的应用程序?”。
Docker Compose - 启动
下图展示了如何处理涉及 Docker Compose 启动问题的本地任务启动错误。
DATAFLOW_VERSION
和 SKIPPER_VERSION
环境变量必须通过 export
命令在当前终端环境中可用,或者作为前缀添加到 docker-compose
命令中。更多信息,请参阅启动 Docker Compose。
Docker Compose - 运行时
下图展示了如何处理涉及 Docker Compose 运行时问题的本地任务启动错误。
默认情况下,分配给 Docker 的内存量可能过低。建议分配的内存量为 8GB。docker stats
命令可以提供有关资源使用情况的有用信息。如果应用程序因资源限制而无法启动,请增加资源分配。有关您平台的更多信息,请参阅Docker 文档。
当任务通过 SCDF 启动时,作为该任务定义一部分的应用程序将在 SCDF 容器上作为 Java 进程启动。对于任务定义的每个部分,都会启动一个应用程序。提供给 Docker 的总体资源分配(内存、CPU 和其他资源)应考虑启动的应用程序数量。
Cloud Foundry
本节介绍如何对 Cloud Foundry 上的应用程序问题进行故障排除。
启动失败
下图展示了如何处理在 Cloud Foundry 上运行的应用程序的启动失败。
应用程序故障
下图展示了如何处理在 Cloud Foundry 上运行的应用程序的应用程序故障
调试部署问题时,提高部署器相关和 Cloud Foundry 相关的日志级别可能会有所帮助。有关更多信息,请参阅"如何为平台部署启用 DEBUG 日志?"。
Kubernetes
本节介绍如何对 Cloud Foundry 上的应用程序问题进行故障排除。
分布式部署文件
下图展示了如何处理在 Kubernetes 上运行的应用程序的分布式部署文件导致的故障
下图展示了如何处理在 Kubernetes 上运行的应用程序的 Helm 图表故障
Helm 图表
在任务执行 ID 之前创建了一个空的任务执行 ID 记录
如果您的任务没有使用正确的属性启动,您可以按照此决策树进行操作。
常规
下图展示了如何处理在 Kubernetes 上运行的应用程序的常规故障
描述 Pod 时,“events
”表部分在调试时提供了有用的信息,可以通过以下命令调用
kubectl describe po/pod_name
例如,成功启动的 timestamp-batch-task
应用程序的事件类似于
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 15s default-scheduler Successfully assigned default/timestamp-7138z511d8 to minikube
Normal Pulled 15s kubelet, minikube Container image "springcloudtask/timestamp-batch-task:latest" already present on machine
Normal Created 14s kubelet, minikube Created container
Normal Started 14s kubelet, minikube Started container
可以对应用程序日志进行跟踪以观察传入的日志,如下所示
kubectl logs -f po/pod_name
故障排除帮助
如果这些故障排除方法均未解决您的问题,并且您仍然需要帮助,您可以访问 StackOverflow 并提供相关详细信息(请参阅:Wiki)。我们会积极关注论坛帖子。