时间即服务故障排除
对 OpenShift 上的 Automation Suite 中的 Temporal 即服务进行故障排除问题。
Maestro 工作流卡住或未启动
症状: Maestro 流程实例保持待处理或正在运行状态,没有任何进展。
原因: TaaS Pod 不可用或运行状况不佳,导致工作器无法调度工作流任务或选取工作流任务。
分辨率
- 检查所有 TaaS Pod 的状态:
kubectl get pods -n uipath | grep taaskubectl get pods -n uipath | grep taas - 识别任何未处于
Running状态的 Pod 并查看其日志:kubectl logs -n uipath <pod-name> --tail=100kubectl logs -n uipath <pod-name> --tail=100 - 查找
warn和error级别的条目。常见原因包括数据库连接故障和资源耗尽。 - 如果
taas-temporal-historyPod 要重新启动,请检查内存使用情况。历史记录服务是内存密集型服务,其自动调节程序是根据内存利用率进行配置的。
TaaS Pod 发生循环崩溃
症状:一个或多个taas-temporal-* Pod 处于CrashLoopBackOff状态。
原因:最常见的原因是启动时无法连接到 PostgreSQL 数据库。
分辨率
- 查看受影响 Pod 的日志:
kubectl logs -n uipath <pod-name> --previouskubectl logs -n uipath <pod-name> --previous - 检查引用持久性或可见性存储的连接错误。
- 验证可从集群访问 PostgreSQL 服务器,以及
taas-temporal-app-secrets密码中的凭据是否正确(适用于 Windows 旧版库)。 - 确认 PostgreSQL
max_connections值满足 TaaS 配置文件的最低要求。PostgreSQL 的默认值 100 是不够的。有关每个配置文件的所需值,请参阅SQL 数据库。
工作流执行速度慢
症状: Maestro 工作流已启动,但选取或完成任务的时间要长于预期。
原因: TaaS 资源不足、PostgreSQL 连接池已耗尽或工作器轮询器的数量无法满足当前负载。
分辨率
- 查看
temporal_activity_schedule_to_start_latency_bucket和temporal_workflow_task_schedule_to_start_latency_bucket的 Prometheus 指标。高值表示任务在队列中的等待时间长于预期。 - 检查 PostgreSQL 实例是否有足够的可用连接。连接池耗尽会导致负载下暂留超时。
- 查看
taas-temporal-history和taas-temporal-matching的 Pod 资源使用情况。如果 Pod 受 CPU 或内存限制,请考虑调整资源限制或扩展部署。
访问临时用户界面以进行诊断
默认情况下,Temporal 网页用户界面 ( taas-temporal-web ) 不会在集群外部公开。要访问它以进行诊断,请端口转发到 Pod:
kubectl port-forward -n uipath deployment/taas-temporal-web 8008:8008
kubectl port-forward -n uipath deployment/taas-temporal-web 8008:8008
在浏览器中打开http://localhost:8008 。通过端口转发访问时无需登录。
Temporal UI 可用于检查单个工作流的执行情况,查看执行历史记录,并识别失败或超时的活动。
TaaS 日志中的锁争用错误
症状: TaaS 日志包含引用锁争用或冲突数据库写入的错误。
原因:两个 Kubernetes 集群同时连接到同一个 PostgreSQL 持久性存储。一次只能有一个集群主动运行 TaaS。
分辨率
在主动/被动部署中,将被动集群上的所有 TaaS 部署扩展至零副本。有关 TaaS 的主动/被动要求的详细信息,请参阅概述。
TaaS init 作业在代理环境中失败
描述
在代理环境中启用 Maestro 或 Temporal 即服务 (TaaS) 时,TaaS init 作业将失败,并显示以下错误:
Unable to get namespace default info ... context deadline exceeded
Unable to get namespace default info ... context deadline exceeded
taas-temporal-frontend 、 taas-temporal-history和taas-temporal-internal-frontend Pod 日志包含以下错误:
failed to do connect handshake ... HTTP/1.1 503
failed to do connect handshake ... HTTP/1.1 503
TaaS 服务通过 Pod IP 地址相互连接。如果no_proxy列表不涵盖 Pod IP 地址,则连接将转到代理,该代理无法访问 Pod IP 地址并会拒绝请求。当 Pod IP 地址不在no_proxy列表中的范围内时,就会发生这种情况,例如,当clusterNetwork CIDR 不在10.0.0.0/8内时。
解决方案
要解决此问题,请执行以下步骤:
-
将 Pod CIDR 范围和节点子网 CIDR 范围添加到
proxy.no_proxy中的input.json。有关详细信息,请参阅代理。 -
应用配置:
uipathctl manifest apply input.json --versions versions.jsonuipathctl manifest apply input.json --versions versions.json