问题描述
前提条件:
客户端已经正确接入移动网关组件(MGS)。
MGS 控制台已经正确配置好后端应用 API 服务。
问题表现:
客户端通过代码发起 PRC 调用,但未能拿到预期结果。
常见错误类型:
MGS 无返回(客户端报错)。
MGS 无返回(超时)。
MGS 有返回,但结果码中显示存在错误。
MGS 有返回,无错误,但返回值不符合预期。
排查思路
针对上述四种常见类型的错误,基本排查思路如下:
MGS 无返回(客户端报错):
根据客户端 exception 详细信息判断错误来源。
检查接入层面问题。
检查类型转换的问题。
检查空值的问题。
检查网络问题。
MGS 无返回(超时):
超时的场景可能比较复杂,时限可能来自:客户端超时设置、中间设备超时限制、MGS 网关 API 超时设置及后端应用服务器超时设置等。
当超时问题发生时,首先要确认 超时 来自何方(客户端/网络/服务端),再根据具体的超时场景做进一步的复现和分析。
MGS 有返回,但结果码中显示存在错误:
参考 网关结果码详细说明,判断问题来源。
网关侧错误码 的出现,一般与 MGS 客户端/服务端的能力配置相关(权限/加解密/签名验证/API 限流)等,请根据错误仔细排查接入方式、验签配置、加解密配置等。
业务侧错误码 的出现,一般与后端应用服务相关。务必结合后端应用服务的日志和错误,排查业务侧服务是否存在异常。
MGS 有返回,无错误,但返回值不符合预期:
这类问题可能与应用逻辑相关。
排查调用请求值和返回值之间的映射关系是否符合预期。
排查业务侧服务接收到的请求值是否符合预期。
排查业务侧服务对请求值的处理是否符合预期。
排查业务侧服务返回的数据格式是否符合预期等。
工具和手段
在涉及网关调用问题的排查时,抓取 HTTP 数据包/网络包帮助问题分析往往是非常必要的。
HTTP 数据包的抓取方法和工具:参见 如何抓取 HTTP 报文。
网络包的抓取方法和工具:参见 如何抓取网络包。