本文为您介绍访问服务返回的状态码的说明信息。
状态码 | 说明 |
200 | 服务正常返回。 |
400 | Processor返回异常。 原因:
|
401 | 服务鉴权失败。 原因:访问服务时未指定Token或指定的Token信息不正确。 处理方法:
|
404 | 找不到服务。 原因:服务名称或服务请求的Endpoint使用不正确。 |
405 | 方法不被允许。 原因:比如服务器只支持GET请求,却发送了POST请求就会返回405。尝试更换请求方法。 |
408 | 请求计算超时。 原因:服务端为每个请求配置了默认的超时时间(默认为5秒,您可以在创建服务的JSON文件中配置metadata.rpc.keepalive字段来调整超时时间),当单个请求的处理时长超过metadata.rpc.keepalive字段配置的值后,服务端会返回状态码408,来中断该请求的处理,并断开该请求所在的TCP连接。 说明 单个请求的处理时长包含Processor的计算时间、请求接收网络数据包时间以及单个请求在队列中排队的时间。 |
429 | 请求触发限流。 原因:EAS提供了基于QPS的限流功能,您可以在创建服务的JSON文件中配置metadata.rpc.rate_limit字段开启该功能。开启限流功能后,如果请求并发数超出了指定限制后,超出的部分请求会被丢弃并返回状态码429。 |
450 | 超出队列长度丢弃请求。 原因:服务端的计算实例在接收到请求后,会先将请求放入队列中进行排队。当实例中的worker(worker数量默认为5,您可以在创建服务的JSON文件中配置metadata.rpc.worker_threads字段来调整worker数量)空闲时,会从队列中获取数据进行计算。当worker计算时间过长,导致队列中请求堆积。当队列打满时(队列长度默认为64,您可以在创建服务的JSON文件中配置metadata.rpc.max_queue_size字段来调整队列长度),新来的请求会直接被拒绝,并返回状态码450,来避免队列过度堆积导致所有请求RT越来越高最终服务不可用。 说明 队列限长在一定程度上也是一种限流保护,避免大流量导致服务雪崩。 处理方法:
|
499 | 客户端主动断开连接。 原因:当客户端主动断开连接时,客户端不会接收到状态码499,该连接上未处理完成的请求会在服务端记录一个状态码499。例如:在客户端配置了HTTP超时时间为30毫秒,服务端的处理延时为50毫秒,客户端等待30毫秒后未获取到返回结果时,会放弃该请求,并主动断开连接,此时在服务端监控中,会出现状态码499。 |
500 | 服务器内部错误。服务器遇到错误,无法完成请求。 |
501 | 尚未实施。服务器作为网关或代理,从上游服务器收到无效响应。 |
502 | 错误网关。服务器作为网关或代理,从上游服务器收到无效响应。 |
503 | 服务不可用。 原因:通过网关访问服务时,如果后端服务实例状态全部为非Ready,则网关会返回状态码503。 比较常见的一种场景是,服务部署完成后状态为Running,且服务各实例状态均为Ready,但发起请求后,服务端返回状态码503。通常是因为异常请求触发了代码中的Bug,导致后端服务实例Crash,从而无法正常响应请求,此时网关会向客户端返回状态码503。 |
504 | 网关超时。服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
505 | HTTP版本不受支持。服务器不支持请求中所用的HTTP协议版本。 |