微信小程序网络排查指引
网络云排查工具是微信支付推出的帮助商户定位和解决网络问题的辅助工具。
傻瓜式的操作,使用门槛几乎为“0”,可视化的示图,清晰展现网络问题。赶快来体验下吧!
工具传送路径:商户平台(pay.weixin.qq.com)-数据中心-网络云排查工具。 需登录商户账号
【工具安装】进入商户平台后,参照安装指引,下载并安装工具:
【工具使用】● 工具安装后大约5分钟,选择日期、出口IP、设备ID后,点击查询即可看到网络曲线
注意:只能查询7天内的网络情况,且查询日期不能早于你安装工具的时间
● 网络问题主要是三个方面的原因:DNS解析、TCP连接、网络请求,通过网络工具可以清晰看到这三个方面的耗时情况(如图中6所示),如需帮助,可以查看我们的帮助文档(如图中4所示)。
注意:图中5所示的告警功能目前还在内测中,暂未发布,具体发布时间,请关注微信支付商户平台公告。
1. 手工定位
1.1 确认商户服务器出口IP
Linux: ifconfig直接输出已配置外网IP,如无配置外网则需要使用第二种方式《自动化工具定位》方式获取
Windows: 可以通过浏览器访问http://ip138.com页面获取
1.2 通过ping确认延时和丢包情况
Linux: ping api.mch.weixin.qq.com -c 100
Windows: ping api.mch.weixin.qq.com -n 100
1.3 通过trace确认对应的路由节点
Linux: traceroute api.mch.weixin.qq.com
Windows: tracert api.mch.weixin.qq.com
1.4 通过mtr确认对应的路由节点丢包情况
mtr -4 -i 1 api.mch.weixin.qq.com
1.5 curl测试
curl -o /dev/null -4 -v -s -w %{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total}"\n" 'https://api.mch.weixin.qq.com/orderquery'
**这里的输出需要确认有一列的时间超过3s才有参考意义
2. 自动化工具定位
2.1 运行工具命令:
./wxpaymonitor -t
2.2 工具运行输出结果:
2.3 自动化工具定位说明:
◆ 工具最优接入IP建议
从ping测延时的结果会按照延时最低到最高的排序,其中最优IP需要与RemoteIp能匹配。如果IP的耗时为9999.999ms则表示该IP不通,同时会有i/o timeout的条目提示。如果商户测试的RemoteIp与该条目录一致,则可以确认存在网络异常。
◆ LocalDns相关的配置建议
从工具测试的结果,UserIp与LocalDns以及RemoteIp需要属于同运营商,具体IP运营商归属商户侧可以通过http://ip.138.com查询
◆ 接口耗时说明
Duration:表示此次请求接口总耗时
Lookup duration:表示此次请求通过DNS解析域名耗时,如果此耗时比较高,建议确认DNS解析是否正常
Connection duration:表示此次请求连接建立耗时,如果此耗时超过1s,表示网络层面TCP连接建立时间长
Request duration: 表示此次请求在业务层面处理的耗时,如果此耗时超过3s则需要重点排查业务处理日志,建议商户提供具体的单号确认问题。
总体来看请求耗时>连接耗时>DNS解析耗时,且总体耗时不超过3s属正常范围。
附一:微信支付回调通知出口IP列表商户侧对商户回调通知功能开通白名单网段:
上海电信出口网段:101.226.103.0/25
上海联通出口网段:140.207.54.0/25
上海CAP出口网段:121.51.58.128/25(新增)
深圳电信出口网段:183.3.234.0/25
深圳联通出口网段:58.251.80.0/25
深圳CAP出口网段:121.51.30.128/25(新增)
香港出口网段:203.205.219.128/25
*注意:上海CAP、深圳CAP的出口为新增,商户侧需要新开防火墙
1. 服务器SSL版本说明
由于低版本的SSL存在高危漏洞,需要确认您系统所使用的SSL版本是否需要升级,详细说明请见公众平台SSL安全策略说明:https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1414562353&version=11&lang=zh_CN
Java开发可以参考Oracle网站的说明:[Oracle Java disable SSL3](http://www.oracle.com/technetwork/java/javase/documentation/cve-2014-3566-2342133.html)
2. IPV6相关
如果您的服务器开启了IPv6支持,由于当前互联网对IPv6支持不完整,导致在DNS解析时通常会碰到超时问题;
建议在调用支付API时,显示指定使用IPv4解析.
PHP程序使用curl调用参考代码如下:
if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4'))
{
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
3. 无法连接微信服务器,访问api.mch.weixin.qq.com超时
a. 是否存在跨运营商访问的情况可以ping api.mch.weixin.qq.com查询对应的解析IP
通过访问ip.138.com获取取口IP,也可以根据商户侧服务器的外网IP确认
b. 确认java程序使用的HttpClient的版本是否<=4.3.4
可升级HttpClient到4.3.6版本
c.如有疑问,请通过邮件联系微信支付技术支持协助处理
收件人:wepayTS@tencent.com
邮件标题:【访问api.mch.weixin.qq.com异常】- 商户名称
邮件内容:微信支付商户号、商户名称、异常说明
4. 无法与api.mch.weixin.qq.com域名建立SSL链接
A: 使用 curl -v https://api.mch.weixin.qq.com/ 查看console输出1. 看是否获取到服务器端SSL证书?
2. 看获取到的证书是否过期?
3. 检查命中的IP的443端口是否能telnet通(检查是否有DNS缓存)
B: 使用curl -o /dev/null -s -w %{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total}"\n" 'https://api.mch.weixin.qq.com/sandbox/orderquery' 来检查HTTPS请求的各阶段耗时,排查定为异常的阶段