12. 故障排查与提交支持
POC 部署手册章节。按 2026.10 主线代码核对;命令输出以当次交付的安装器为准。
本章内容:本章是出现问题时的处理顺序:先自己确认最常见的三类原因,再一次性采集排查信息,然后按安装阶段、诊断代码、装后访问与调用三种场景对照处理;仍无法解决时,按 12.6 节准备材料提交支持。读者是客户方系统管理员与实施工程师。本章所有采集命令都是只读的,可以放心执行。
12.1 先自己确认三件事
适用场景:调用方反馈「调不通」「被拒绝」「突然不能用了」,但平台服务本身运行正常。
这类反馈里,大部分不是故障,而是平台按配置做出的拒绝。拒绝的结论写在两个地方,不需要查日志:
- 调用方收到的错误响应体里的
reason字段(OpenAI、Anthropic 协议的错误体还带request_id,与响应头x-request-id相同); - 控制台「网关请求」中按
x-request-id查到的这次调用记录。
操作步骤
- 向调用方要这次调用的
x-request-id,以及响应体中的reason。 - 在控制台「网关请求」中按
x-request-id查到这次调用,核对调用人、模型与结果。 - 按下表判断属于哪一类,并按「去哪里确认」核对配置。
| 类别 | 典型 reason(HTTP 状态) | 去哪里确认 |
|---|---|---|
| :-- | :-- | :-- |
| 权限与范围 | MODEL_NOT_AVAILABLE_FOR_WORKSPACE(403)、PERMISSION_DENIED(403)、LLM_MODEL_NOT_AVAILABLE(404)、UNAUTHENTICATED / ACCESS_KEY_REVOKED(401) | 模型分组的「可用范围与配额」是否包含该成员;调用使用的模型名是否在该服务内;API 密钥是否为该成员本人创建且未禁用 |
| 额度 | QUOTA_EXCEEDED(429)、USER_TOKEN_EXCEEDED / USER_COST_EXCEEDED(429)、MODEL_SERVICE_QUOTA_HARD_REJECT(429)、MONTHLY_TOKEN_EXCEEDED / INSUFFICIENT_CREDITS(402) | 模型分组「可用范围与配额」中该成员或该服务的额度是否已用完;租户额度是否已用完 |
| 规则拦截 | CONTENT_POLICY_BLOCKED(403)、DATA_FENCE_BLOCKED(403)、NETWORK_NOT_ALLOWED(403)、TRAFFIC_RATE_LIMITED / TRAFFIC_CONCURRENCY_LIMITED(429) | 流量规则中命中的规则(内容安全、数据边界、来源网段、限流与并发) |
你会看到
- 属于这三类时,平台服务状态正常,同一成员换一个在范围内、额度未用完、不触发规则的请求可以成功。
- 处理方式是调整配置(加入范围、调整额度、修改规则)或让调用方修改请求,不需要重启任何服务。
注意:这三类拒绝都会留下调用记录。如果「网关请求」里按 x-request-id 完全查不到这次调用,说明请求没有到达网关(地址错、网络不通、前置设备拦截),按 12.5 节排查。
12.2 一次性采集信息
适用场景:12.1 节无法解释的问题,或任何需要提交支持的问题。先采集,再动手处理——重启服务之后,部分现场信息就不在了。
操作步骤
- 在安装主机上执行下面四条命令。四条都是只读的,不改变任何服务状态。
# 安装主机 · root · 只读(采集排查信息,输出写到暂存目录)
sudo zenova status --json > /root/zenova-install/status.json
sudo zenova doctor --all --save /root/zenova-install/doctor
sudo zenova logs control-plane --since '30 min ago' > /root/zenova-install/control-plane.log
sudo cp /opt/zenova/state/install.log /root/zenova-install/
- 问题发生时间早于 30 分钟前时,把
--since改为覆盖问题发生时刻的时间,例如'2 hours ago'。--since的值原样传给 journalctl。 - 问题涉及某个外部地址(模型供应商、通知渠道、对象存储)的连通性时,补充一次定向体检:
# 安装主机 · root · 只读(对指定地址分层检查 DNS、TCP、TLS、HTTP)
sudo zenova doctor --target <目标地址>
| 命令 | 产出 | 用途 |
|---|---|---|
| :-- | :-- | :-- |
zenova status --json | 各服务状态、当前版本、各实例、进行中与最近一次升级 | 判断哪个服务没在运行、当前是什么版本、是否卡在升级中 |
zenova doctor --all --save <目录> | 全量本机与连通性体检报告,含诊断代码与处理建议 | 一次性列出所有阻断项与警告项;退出码 0 表示没有阻断项,2 表示有阻断项 |
zenova logs control-plane --since <时间> | 控制面在指定时间段内的日志 | 定位控制台报错、配置下发、数据库访问类问题 |
cp /opt/zenova/state/install.log | 安装与升级过程日志 | 定位安装、升级、清空重装阶段的失败 |
你会看到
status.json、doctor/目录、control-plane.log、install.log四份材料出现在/root/zenova-install/下。zenova doctor --target的报告注明「直连,可能与生产出口不一致」时,结果只代表本机直连该地址的情况,不代表网关实际出口(例如经出口代理)的连通性。
注意:zenova status 只列 zenova- 开头的服务。postgres、clickhouse、caddy、secret-service、spicedb 用 systemctl status <名称> 查看。远端网关节点上的问题,在节点主机上执行 sudo zenova status、sudo zenova logs node-edge、sudo zenova logs node-caddy 采集。
注意:以上材料可能包含内部地址、账号名与请求内容片段。对外提交前按 12.6 节脱敏。不要采集或提交 /opt/zenova/.env、/etc/zenova/secret-service/、/opt/zenova/.env.runtime/root-password-initial,这三处含主密钥、密钥服务材料与初始密码。
12.3 安装阶段失败对照表
适用场景:zenova install(含 --check-only 预检)在确认安装前后停止,屏幕给出提示。
安装器在确认安装之前不写任何文件、不创建任何服务。确认前停止的,处理原因后重新执行同一条命令即可,本机没有需要清理的东西。
操作步骤
- 按屏幕提示的原文在下表中查找。
- 按「处理」列处理后,重新执行原命令。
- 表中没有的,记下屏幕提示原文与诊断代码,查 12.4 节。
| 屏幕提示 | 原因 | 处理 |
|---|---|---|
| :-- | :-- | :-- |
| 答案不合法:请用 sudo 运行安装器 | 未以 root 执行 | 加 sudo 重新执行 |
| 安装包无法读取或已损坏 | 离线包不完整或路径写错 | 核对文件路径;核对文件大小与下载站显示的一致;不一致时重新下载(离线包支持断点续传) |
| 安装器版本 … 与离线包版本 … 不一致 | 安装器与离线包不是同一版本 | 用与离线包同一版本的安装器;两者应从下载站同一次选择中下载 |
| 安装包与安装程序不属于同一版本 | 安装器与离线包分属不同产品 | 用同一产品的安装器与离线包;核对离线包文件名中的产品字段 |
| 本机已安装…,该安装程序为…版 | 本机已装另一个产品 | 换用已装产品的安装包;确需更换产品按第 11 章清空重装 |
| 离线包不适用于本机的平台或部署形态 | 系统或 CPU 架构与离线包不符 | 用 uname -m 核对本机架构,下载对应平台的离线包 |
| …不含「…」能力,请从 --with 中去掉 | 指定了本产品不提供的能力 | 从 --with 中去掉该能力;确需该能力时改选提供它的产品 |
| 内存不足:需要 8 GB,本机 N GB | 内存低于 8 GiB | 扩容内存后重新执行 |
| 磁盘空间不足:/opt/zenova 需要 N GB,剩余 M GB | 安装根所在卷可用空间不足 | 扩容;或用 --install-dir <目录> 安装到提示中列出的候选挂载点;或把 PostgreSQL、ClickHouse、对象存储改用现有服务以减少本机占用 |
| 本机没有 systemd,无法托管服务 | 主机不是 systemd 启动 | 更换为 systemd 启动的 Linux 主机 |
[HOST_CLOCK_UNSYNCED] | 时间未同步或无法确认 | 仅告警,继续安装;请自行核对主机时间,处理方法见 3.2 节 |
[HOST_CLOCK_SKEW] | 已测得与时间源偏差超过 30 秒 | 按 3.2 节校准后重试 |
补充几种确认安装后才会出现的情况:
| 屏幕提示或现象 | 原因 | 处理 |
|---|---|---|
| :-- | :-- | :-- |
入口监听端口被占用(HOST_ENTRY_PORT_BUSY) | 业务入口端口已被其他进程占用;安装停止,不自动更换 | 停止占用进程;或修改访问地址里的端口;或用 --business-entry-port 指定前置转发到的本机端口 |
| 安装上级目录不可遍历、挂载点带 noexec、SELinux / fapolicyd / KYSEC 拦截执行 | 服务用户 zenova 无法进入或执行安装根下的程序;这类拦截在解包后才能发现 | 按 3.3 节处理,必要时由主机安全管理员添加放行策略 |
| 装后验收失败:未通过的检查:<验收项>(<依据>) | 某项装后验收未通过,安装不记为完成 | 按括号中的依据处理后,重新执行同一条安装命令,从装后验收继续 |
你会看到
- 处理后重跑,安装器从上次停下的位置继续:确认前停止的从头问答,确认后停止的沿用已有安装进度。
注意:--check-only 预检通过不代表正式安装一定通过。预检不包含业务入口端口检查、现有依赖检测、解包后的执行权限检查与通知测试,上面第二张表中的问题都可能在预检通过后才出现。
注意:不要删除 /opt/zenova/state/ 下的进度文件或手工删除目录来「重新开始」。需要从头安装时,使用第 11 章的清空重装。
12.4 诊断代码怎么读
适用场景:安装器、zenova doctor、装后验收、升级、清空重装、备份恢复的输出中带有形如 [HOST_DISK_LOW] 的代码。
诊断代码共 69 个,按前缀分为十组。代码是稳定的:同一个问题在不同版本、中英文界面下代码不变,可以直接把代码报给支持,不需要转述屏幕文字。完整列表与处理办法见产品文档站的「安装与运维诊断代码」页。
| 前缀 | 数量 | 范围 |
|---|---|---|
| :-- | :-- | :-- |
HOST | 22 | 主机条件:架构、内存、磁盘、时间、CPU 指令集、容器运行时、入口端口、目录权限、安全模块、root 权限 |
PKG | 6 | 安装器与离线包:完整性、平台、版本、产品所含能力 |
FRESH | 6 | 清空重装:外部数据、共享资源、归属证明、现场变化、参数 |
NODE | 6 | 远端网关节点:已安装、注册、配置下发 |
ANS | 4 | 安装答案与配置值:不合法、无法读取、续装不一致、产品已锁定 |
NET | 4 | 网络:访问地址格式、依赖与通知渠道探测、目标连通性、管理面网段 |
UPD | 10 | 本机升级服务:未安装或未启动、拒绝访问、应答超时、版本落后、操作状态损坏或无法读取 |
UPG | 3 | 升级:升级前检查、节点未升级 |
SVC | 3 | 本机服务:已完成安装、服务控制失败、无法确定本机安装 |
BAK | 5 | 备份与恢复:被拒绝、备份文件摘要不符、数据库转储不可读、版本或形态与本机不一致 |
操作步骤
- 先看前缀,确定是哪一类问题。
- 再看代码后面的参数(如
path、have_gib、need_gib),它们给出了具体对象与数值。 - 按屏幕给出的处理建议或下表处理;仍不清楚时,把代码与完整输出一并提交支持。
常见代码举例:
| 代码 | 含义 | 处理 |
|---|---|---|
| :-- | :-- | :-- |
HOST_DISK_LOW | 安装目录所在卷可用空间不足,安装已停止;输出列出候选挂载点 | 用 --install-dir <目录> 安装到可用空间更大的卷,或清理磁盘后重试 |
HOST_CPU_FEATURES | CPU 缺少本机部署 ClickHouse 所需的指令集 | 虚拟机把 CPU 型号设为 host(x86-64-v3);或在安装问答中改用现有 ClickHouse |
HOST_ENTRY_PORT_BUSY | 访问地址依赖的本机监听端口已被其他进程占用 | 停止该进程,或修改访问地址里的端口,或加 --business-entry-port |
PKG_INVALID | 无法读取或校验离线包 | 确认文件为完整的 .zpkg 后重试 |
PKG_VERSION_MISMATCH | 安装器版本与离线包版本不一致 | 使用与离线包同一版本的安装器 |
PKG_CAP_NOT_IN_EDITION | 所选产品不提供该能力 | 从 --with 中移除该能力,或换用提供该能力的产品 |
FRESH_EXTERNAL_DATA | 清空重装检测到外部数据服务 | 安装器不会删除外部数据库或对象存储;在计划文件中保持 remove = false |
FRESH_OWNER_UNPROVEN | 部分对象无法自动证明由本安装创建 | 交互模式逐项 y/N 确认,或导出计划文件审核后执行(第 11 章) |
FRESH_STATE_CHANGED | 生成清空计划后现场已发生变化 | 重新执行 --fresh --dry-run 生成最新计划文件 |
NET_PUBLIC_URL | 访问地址不是合法的 http/https 地址 | 用 zenova config set PUBLIC_URL http://<IP或域名> 修正 |
NET_DEP_UNREACHABLE | 数据依赖或通知渠道探测未通过 | 核对目标地址、网络连通性与访问凭据后重试 |
UPG_NODES_NOT_UPGRADED | 升级包缺少在线网关节点所需平台的节点包 | 获取包含这些平台节点包的升级包后重新执行 zenova upgrade;网关节点由升级自动滚动,无需登录节点 |
SVC_ALREADY_INSTALLED | 本机已完成安装 | 升级用 zenova upgrade;改配置用 --reconfigure;清空重装加 --fresh |
NODE_ALREADY_INSTALLED | 本机已存在网关节点安装 | 同一控制面升级加 --upgrade;换控制面或换令牌加 --reenroll --token <令牌> |
注意:zenova doctor 有阻断项时退出码为 2,没有阻断项为 0,可以据此在巡检脚本中判断。警告项不影响退出码,但应记入交付记录。
12.5 装完之后访问与调用异常
控制台打不开
操作步骤
- 先用安装完成时打印的「本机直接访问」地址在内网打开控制台。它按管理入口实际端口拼出,不经前置转发。能打开,说明本机正常,问题在负载均衡、反向代理、NAT 或网络策略,转第 4 步。
- 「本机直接访问」也打不开时,在安装主机上查看服务状态:
# 安装主机 · root · 只读(查看各服务状态)
sudo zenova status
systemctl status caddy postgres clickhouse secret-service spicedb
- 对未运行的服务重启并查看日志:
# 安装主机 · root · 写入(重启指定服务)
sudo zenova restart <服务>
sudo zenova logs <组件> --since '10 min ago'
- 本机正常但外部访问不通:检查主机防火墙、云安全组与域名解析;使用了前置 TLS 或代理时,确认前置设备转发到的本机端口与安装时填写的一致。
你会看到
- 重启后服务状态恢复为运行中,控制台可以打开。
- 控制面不可用期间,网关节点仍按最近一次配置继续服务,已有业务调用不受影响。
注意:zenova restart 只接受 zenova- 开头的服务。控制面切换槽位的几秒内,内部入口返回 503 属于正常现象,入口代理会暂存新请求最长 5 秒。中心网关节点数据面(3080)就绪检查返回 503、原因为 no_tenant_routes,表示还没有租户或模型路由,创建租户并配置模型后恢复,不是故障。
调用返回错误
网关的三种协议入口(OpenAI、Anthropic、Gemini)在失败时都返回统一的错误信封,错误体中带稳定的 reason。HTTP 状态由 reason 决定,三种协议一致;响应头 x-should-retry 说明重试是否有意义。
同一个 HTTP 状态码下,reason 不同,处置完全不同。 只看状态码会走错方向:同样是 429,可能是成员额度用完(要调额度),也可能是上游供应商限流(稍后重试即可);同样是 503,可能是模型没配路由(要改配置),也可能是上游暂时不可用(稍后重试)。排查时一律以 reason 为准。
| HTTP 状态 | reason | 含义 | 谁来处理 · 是否可重试 |
|---|---|---|---|
| :-- | :-- | :-- | :-- |
| 400 | LLM_REQUEST_BODY_INVALID / VALIDATION_FAILED | 请求体不合法 | 调用方修改请求 · 否 |
| 400 | LLM_CONTEXT_OVERFLOW | 超出模型上下文长度 | 调用方修改请求 · 否 |
| 401 | UNAUTHENTICATED | 未通过身份认证(未携带 API 密钥或密钥无效) | 调用方修改请求 · 否 |
| 401 | ACCESS_KEY_REVOKED | API 密钥已被吊销 | 调用方换用有效密钥 · 否 |
| 402 | MONTHLY_TOKEN_EXCEEDED / INSUFFICIENT_CREDITS | 月度用量或余额不足 | 管理员调整额度 · 否 |
| 403 | PERMISSION_DENIED | 无权访问 | 管理员核对权限与可用范围 · 否 |
| 403 | MODEL_NOT_AVAILABLE_FOR_WORKSPACE | 该模型不在调用人的可用范围内 | 管理员把成员加入包含该模型的模型分组的可用范围 · 否 |
| 403 | CONTENT_POLICY_BLOCKED | 请求内容被内容安全规则拦截 | 调用方修改请求内容 · 否 |
| 403 | NETWORK_NOT_ALLOWED | 来源网段不被允许 | 管理员核对网段策略 · 否 |
| 403 | CAPABILITY_NOT_LICENSED | 许可证未包含该能力 | 租户管理员核对许可证 · 否 |
| 404 | LLM_MODEL_NOT_AVAILABLE | 请求的模型名不存在或不可用 | 调用方改用可用的模型名 · 否 |
| 408 | REQUEST_TIMEOUT | 请求超时 | 上游问题,稍后重试 · 是 |
| 429 | QUOTA_EXCEEDED / USER_TOKEN_EXCEEDED / USER_COST_EXCEEDED | 额度已用完 | 管理员调整额度 · 否 |
| 429 | MODEL_SERVICE_QUOTA_HARD_REJECT | 模型分组配额硬拒绝 | 管理员调整模型分组配额 · 否 |
| 429 | TRAFFIC_RATE_LIMITED / TRAFFIC_CONCURRENCY_LIMITED | 触发平台限流或并发上限 | 管理员核对限流规则;稍后重试 · 是 |
| 429 | LLM_RATE_LIMITED | 上游供应商限流 | 上游问题,稍后重试 · 是 |
| 502 | LLM_UPSTREAM_CREDENTIAL_REJECTED | 上游拒绝了平台保存的供应商凭据 | 管理员更新模型供应商凭据 · 否 |
| 502 | LLM_UPSTREAM_MODEL_NOT_FOUND | 上游不存在该模型 | 管理员核对供应商侧模型名 · 否 |
| 502 | LLM_BILLING_EXCEEDED | 上游账号额度耗尽 | 管理员处理供应商账号额度 · 否 |
| 502 | LLM_UPSTREAM_SERVER_ERROR | 上游服务端错误 | 上游问题,稍后重试 · 是 |
| 502 | LLM_UPSTREAM_CONNECT_FAILED / LLM_STREAM_INTERRUPTED | 与上游建连失败或流中断 | 带同一幂等键重试 · 是 |
| 503 | MODEL_ROUTE_NOT_CONFIGURED / NO_MODEL_SERVICE_SELECTED | 模型路由未配置或当前工作空间没有可用的模型 | 管理员检查模型分组与流量规则配置 · 否 |
| 503 | LLM_PROVIDER_UNAVAILABLE / LLM_OVERLOADED | 上游暂时不可用或过载 | 上游问题,稍后重试 · 是 |
| 503 | CONTROL_PLANE_UNAVAILABLE / SERVICE_UNAVAILABLE | 平台服务暂时不可用 | 管理员按本节「控制台打不开」排查 · 是 |
| 504 | LLM_TIMEOUT | 等待上游超时 | 上游问题,稍后重试 · 是 |
你会看到
- 「谁来处理」为调用方的,调用方修改请求后即可成功;为管理员的,重试不会改变结果,须调整配置;为上游的,重试可能成功。
- 流式请求在已开始输出后失败时,网关发送一条与所选协议错误体同形的流内错误帧,随后正常结束流;已输出的内容与用量照常计费和展示,
reason同样按上表解读。
注意:上表只列出最常见的 reason。完整列表(含每个 reason 的 HTTP 状态、错误类型与是否可重试)见产品文档站「错误参考」页。上表没有的 reason,直接把 reason 原文与 x-request-id 一起提交支持。
注意:模型供应商测试或 zenova doctor --target 报告连通失败时,失败分为七类:dnsFailed(域名解析)、proxyConnectFailed(出口代理建连)、connectFailed(目标 TCP 建连)、tlsFailed(TLS 握手与证书)、timeout(超时)、ssrfBlocked(出站安全策略拦截)、invalidEndpointUrl(地址格式非法)。按分类找对应层的负责人,不要从头逐层排查。
12.6 提交支持需要准备什么
适用场景:按 12.1~12.5 节处理后问题仍在,需要交付方或供应商支持。
操作步骤
- 按 12.2 节采集四份材料。
- 按下表整理问题信息。能提供的尽量提供,没有的写「无」,不要留空让支持猜。
| 字段 | 说明 | 从哪里取 |
|---|---|---|
| :-- | :-- | :-- |
| 发生时间与时区 | 精确到分钟,注明时区(如 UTC+8) | 调用方日志或现场记录 |
| 请求 ID | 响应头 x-request-id,错误体中的 request_id 与其相同 | 调用方响应;控制台「网关请求」 |
| 链路 ID | 调用记录中显示链路 ID 时一并提供 | 控制台调用记录(以页面实际显示为准) |
| 发起人 | 调用所属成员的账号名 | 控制台「网关请求」 |
| 接入凭据前缀 | API 密钥的前几位,用于区分是哪一把密钥 | 控制台密钥列表;不要提供完整密钥 |
| 客户端 IP | 调用方出口地址 | 调用方或控制台调用记录 |
| 声明模型与实际路由模型 | 调用方请求里写的模型名,以及实际路由到的模型 | 调用方请求;控制台调用记录 |
| HTTP 状态码与错误码 | HTTP 状态、错误体中的 reason;安装与运维类问题提供诊断代码 | 调用方响应;屏幕输出 |
| 复现步骤 | 从哪台机器、用什么命令或界面操作、得到什么结果;能复现时附可执行的 curl(密钥用 <YOUR_API_KEY> 代替) | 现场整理 |
| 截图 | 控制台报错页、「网关请求」记录详情、终端输出 | 现场截取 |
- 对全部材料脱敏(见下)。
- 按以下顺序组织材料,打包提交:
| 顺序 | 内容 |
|---|---|
| :-- | :-- |
| 1 | 一句话问题描述:现象、影响范围、开始时间 |
| 2 | 环境信息:产品、完整版本号与通道、平台、已启用能力、数据依赖部署方式(安装器部署 / 现有服务)、是否有远端网关节点 |
| 3 | 上表字段 |
| 4 | 已经做过的排查与处理,以及结果 |
| 5 | 12.2 节采集的四份材料,及 zenova doctor --target 报告(如有) |
| 6 | 截图 |
你会看到
- 材料齐全时,支持可以直接按请求 ID 与诊断代码定位,不需要来回追问。
注意:以下内容必须脱敏或不得提交:
| 内容 | 处理 |
|---|---|
| :-- | :-- |
| API 密钥、模型供应商凭据、数据库口令、对象存储访问密钥 | 只保留前缀,其余删除 |
root 密码与初始密码、两步验证恢复码 | 不得提交 |
/opt/zenova/.env、/etc/zenova/secret-service/、/opt/zenova/.env.runtime/ 下的文件,密钥归档与平台备份导出文件 | 不得提交;含主密钥与密钥服务材料 |
| 许可证文件内容 | 不得提交;需要时只说明许可证状态 |
| 请求与响应正文中的业务数据、个人信息 | 删除或替换为示例内容 |
| 内部 IP、域名、主机名 | 按客户信息安全要求替换,替换前后保持一一对应,便于支持比对 |
注意:初始密码与任何凭据不得通过即时通讯、邮件或工单传递;截图与录屏前确认画面中没有密码、完整密钥与恢复码。
能力说明
| 不提供的能力 | 替代做法 |
|---|---|
| :-- | :-- |
| 一键打包全部排查材料并自动脱敏 | 按 12.2 节四条命令采集,按 12.6 节手工脱敏 |
| 安装主机日志自动上报给供应商 | 由客户确认脱敏后,按 12.6 节顺序人工提交 |
zenova status 列出全部系统服务 | postgres、clickhouse、caddy、secret-service、spicedb 用 systemctl status <名称> 查看 |
zenova doctor --target 代表网关实际出口的连通性 | 报告注明「直连」时,以模型供应商测试或经网关的真实调用结果为准 |
| 只凭 HTTP 状态码判断处置方式 | 以错误体中的 reason 为准,查 12.5 节或「错误参考」页 |
---