一 背景
在我们日常运维过程中,会遇到rpc调用返回9,从文档(链接)可以看出,9的定义是客户处处理错误,包括序列化错误等,一般都是因为服务端返回一个非法json。但是很多场景下,9其实有更深层次的原因导致。以下分享几个我日常运维过程中见到的几个case, 方便后续其他类似问题参考处理。
二 场景1:服务端502
原因:服务端返回502,不是一个标准的json返回,客户端最后解析json失败,返回9
三 场景2:服务端413
客户端通过rpc上传一个比较大的base64做文件,服务端返回413请求参数过大,返回不是一个标准的json返回,客户端最后解析json失败,返回9
四 总结
rpc返回9一般都是因为服务端各种异常,导致返回非标准的json数据导致。一般可能是Nginx层或者防火墙层面的拦截导致,一般到不了业务服务端。