一、前言
PTS 错误码主要有两种:
·引擎发请求包时产生的自定义错误码。
·引擎透传的 HTTP、gRPC 等协议的错误码。
错误码只代表大致的错误类型;若要定位具体错误原因,请务必参考错误的详细信息。
二、引擎自定义错误码
引擎自定义的错误码,是用来进一步细分脚本可能导致的错误,例如:设置的 HTTP 超时时间不合理(默认10秒)、域名不存在等,方便你排查问题。
| 错误码 | 英文描述 | 错误码含义 |
| 999 | unknown | 通用错误码,具体原因见请求采样、施压机引擎日志。 |
| 1010 | context deadline | 请求超时,通常与1301状态码同时出现,均表示超时。 |
| 1100 | 具体的 DNS 错误信息 | DNS 查询出错的通用错误码。 |
| 1101 | lookup: no such host | DNS 域名解析错误。 |
| 1200 | 具体的 TCP 错误信息 | 请求在成功建立网络连接后出错的通用错误码。 |
| 1201 | 具体的 TCP op error 错误信息 | 请求出错,且该请求使用的不是 TCP 连接。 |
| 1202 | connection reset by peer | 请求出错,且该错误发生于数据的读取或写入场景,服务端关闭了连接,可能是服务端异常、或负载过高等原因。 |
| 1203 | broken pipe | 请求出错,且该错误发生于数据的写入场景,服务端关闭了连接,可能是服务端异常、或负载过高等原因。 |
| 1204 | 具体的系统调用错误信息 | 请求出错,且错误来源于系统调用。 |
| 1210 | 具体的 dial 错误信息 | 请求在建立网络连接时出错的通用错误码。 |
| 1211 | unknown errno on with message | 请求出错,且该错误来源于未被识别的系统调用。 |
| 1212 | dial: i/o timeout | 建立网络连接超时。 |
| 1301 | request canceled | 请求取消,通常是因为超时,且超时情况下通常与1010错误码同时出现。 |
| 2000 | 具体错误信息 | 数据库操作出错。 |
| 2001 | 具体错误信息 | 检查点结果为 False。 |
三、HTTP 协议常见错误码
单击查看页面的详细说明
| 状态码 | 状态码英文名称 | 中文描述 |
| 100 | Continue | 继续。客户端应继续其请求。 |
| 101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议。 |
| 200 | OK | 请求成功。一般用于 GET 与 POST 请求。 |
| 201 | Created | 已创建。成功请求并创建了新的资源。 |
| 202 | Accepted | 已接受。已经接受请求,但未处理完成。 |
| 203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的 meta 信息不在原始的服务器,而是一个副本。 |
| 204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档。 |
| 205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域。 |
| 206 | Partial Content | 部分内容。服务器成功处理了部分 GET 请求。 |
| 300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如浏览器)选择。 |
| 301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新 URI,返回信息会包括新的 URI,浏览器会自动定向到新 URI。今后任何新的请求都应使用新的 URI 代替。 |
| 302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有 URI。 |
| 303 | See Other | 查看其它地址。与301类似。使用 GET 和 POST 请求查看。 |
| 304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。 |
| 305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问。 |
| 306 | Unused | 已经被废弃的 HTTP 状态码。 |
| 307 | Temporary Redirect | 临时重定向。与302类似。使用 GET 请求重定向。 |
| 400 | Bad Request | 客户端请求的语法错误,服务器无法理解。 |
| 401 | Unauthorized | 请求要求用户的身份认证。 |
| 402 | Payment Required | 保留,将来使用。 |
| 403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求。 |
| 404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"你所请求的资源无法找到"的个性页面。 |
| 405 | Method Not Allowed | 客户端请求中的方法被禁止。 |
| 406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求。 |
| 407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 |
| 408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时。 |
| 409 | Conflict | 服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突。 |
| 410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置。 |
| 411 | Length Required | 服务器无法处理客户端发送的不带 Content-Length 的请求信息。 |
| 412 | Precondition Failed | 客户端请求信息的先决条件错误。 |
| 413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个 Retry-After 的响应信息。 |
| 414 | Request-URI Too Large | 请求的 URL 过长( URL 通常为网址),服务器无法处理。 |
| 415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式。 |
| 416 | Requested range not satisfiable | 客户端请求的范围无效。 |
| 417 | Expectation Failed | 服务器无法满足 Expect 的请求头信息。 |
| 500 | Internal Server Error | 服务器内部错误,无法完成请求。 |
| 501 | Not Implemented | 服务器不支持请求的功能,无法完成请求。 |
| 502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。 |
| 503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中。 |
| 504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求。 |
| 505 | HTTP Version not supported | 服务器不支持请求的 HTTP 协议的版本,无法完成处理。 |
四、gRPC 协议常见错误码
点此查看页面的详细说明
| 英文描述 | 状态码 | 说明 |
| OK | 0 | 不是错误;成功后返回。 |
| CANCELLED | 1 | 该操作通常被调用方取消。 |
| UNKNOWN | 2 | 未知错误。例如,当从另一个地址空间接收的 Status 值属于此地址空间中未知的错误空间时,可能会返回此错误。此外,API 引发的错误如果没有返回足够的错误信息,则可能会转换为此错误。 |
| INVALID_ARGUMENT | 3 | 客户端指定的参数无效。请注意,这与 FAILED_PRECONDITION 不同。INVALID_ARGUMENT 表示无论系统状态如何都有问题的参数(例如,格式错误的文件名)。 |
| DEADLINE_EXCEEDED | 4 | 在操作完成之前,截止日期已过期。对于更改系统状态的操作,即使操作已成功完成,也可能返回此错误。例如,来自服务器的成功响应可能会延迟很长时间。 |
| NOT_FOUND | 5 | 找不到某些请求的实体(例如,文件或目录)。服务器开发人员注意:如果对整个用户类别的请求被拒绝,例如逐步推出功能或未记录的 allowlist,则可以使用 NOT_FOUND。如果某类用户中的某些用户的请求被拒绝,例如基于用户的访问控制,则必须使用 PERMISSION_DENIED。 |
| ALREADY_EXISTS | 6 | 客户端试图创建的实体(例如,文件或目录)已存在。 |
| PERMISSION_DENIED | 7 | 调用者没有执行指定操作的权限。PERMISSION_DENIED 不能用于因耗尽某些资源而导致的拒绝(对于这些错误,请使用 resource_EXHAUSTED)。如果无法识别调用者,则不得使用 PERMISSION_DENIED (对于这些错误,请使用 UNAUTHENTICATED)。此错误代码并不意味着请求有效,或者请求的实体存在或满足其他先决条件。 |
| RESOURCE_EXHAUSTED | 8 | 某些资源已用尽,可能是每个用户的配额,也可能是整个文件系统空间不足。 |
| FAILED_PRECONDITION | 9 | 操作被拒绝,因为系统未处于执行操作所需的状态。例如,要删除的目录是非空的,rmdir 操作应用于非目录等。服务实现者可以使用以下准则来决定 FAILED_PRECONDITION、ABORTED 和 UNAVAILABLE:如果客户端可以重试失败的调用,请使用 UNAVAILABLE。如果客户端应在更高级别重试(例如,当客户端指定的测试和设置失败时,表示客户端应重新启动读-修改-写序列),请使用 ABORTED。如果在显式修复系统状态之前客户端不应重试,请使用 FAILED_PRECONDITION。例如,如果“rmdir”因目录非空而失败,则应返回 FAILED_PRECONDITION,因为除非从目录中删除文件,否则客户端不应重试。 |
| ABORTED | 10 | 操作被中止,通常是由于并发问题,如序列器检查失败或事务中止。请参阅上面的指导原则,以确定 FAILED_PRECONDITION、ABORTED 和 UNAVAILABLE。 |
| OUT_OF_RANGE | 11 | 尝试的操作超出了有效范围。 例如,查找或读取文件末尾。与 INVALID_ARGUMENT 不同,此错误表示一个问题,如果系统状态发生变化,则可以修复该问题。例如,如果要求32位文件系统以不在[0,2^32-1]范围内的偏移量进行读取,则会生成 INVALID_ARGUMENT,但如果要求以超过当前文件大小的偏移量读取,则将生成 OUT_OF_RANGE。FAILED_PRECONDITION 和 OUT_OF_RANGE 之间有一点重叠。我们建议在应用时使用 OUT_OF_RANGE(更具体的错误),以便在空间中迭代的调用者可以很容易地查找 OUT_OF_RANGE 错误,以便在完成时进行检测。 |
| UNIMPLEMENTED | 12 | 此服务未实现或不支持/启用该操作。 |
| INTERNAL | 13 | 内部错误。这意味着底层系统预期的一些不变量已被打破。此错误代码是为严重错误保留的。 |
| UNAVAILABLE | 14 | 该服务当前不可用。这很可能是一种瞬态情况,可以通过回退重试来纠正。请注意,重试非幂等操作并不总是安全的。 |
| DATA_LOSS | 15 | 无法恢复的数据丢失或损坏。 |
| UNAUTHENTICATED | 16 | 请求没有该操作的有效身份验证凭据。 |