網(wǎng)絡(luò)排查指引
網(wǎng)絡(luò)云排查工具安裝指引
網(wǎng)絡(luò)云排查工具是微信支付推出的幫助商戶定位和解決網(wǎng)絡(luò)問題的輔助工具。
傻瓜式的操作,使用門檻幾乎為“0”,可視化的示圖,清晰展現(xiàn)網(wǎng)絡(luò)問題。趕快來體驗(yàn)下吧!
工具傳送路徑:商戶平臺(www.tg885.com)-數(shù)據(jù)中心-網(wǎng)絡(luò)云排查工具。 需登錄商戶賬號
【工具安裝】進(jìn)入商戶平臺后,參照安裝指引,下載并安裝工具:
【工具使用】● 工具安裝后大約5分鐘,選擇日期、出口IP、設(shè)備ID后,點(diǎn)擊查詢即可看到網(wǎng)絡(luò)曲線
注意:只能查詢7天內(nèi)的網(wǎng)絡(luò)情況,且查詢?nèi)掌诓荒茉缬谀惆惭b工具的時(shí)間
● 網(wǎng)絡(luò)問題主要是三個(gè)方面的原因:DNS解析、TCP連接、網(wǎng)絡(luò)請求,通過網(wǎng)絡(luò)工具可以清晰看到這三個(gè)方面的耗時(shí)情況(如圖中6所示),如需幫助,可以查看我們的幫助文檔(如圖中4所示)。
注意:圖中5所示的告警功能目前還在內(nèi)測中,暫未發(fā)布,具體發(fā)布時(shí)間,請關(guān)注微信支付商戶平臺公告。
常見網(wǎng)絡(luò)超時(shí)問題定位
1. 手工定位
1.1 確認(rèn)商戶服務(wù)器出口IP
① 通過curl myip.ipip.net命令獲取
② 瀏覽器訪問http://myip.ipip.net/獲取
1.2 通過ping確認(rèn)延時(shí)和丟包情況
Linux: ping api.mch.weixin.qq.com -c 100
Windows: ping api.mch.weixin.qq.com -n 100
1.3 通過trace確認(rèn)對應(yīng)的路由節(jié)點(diǎn)
Linux: traceroute api.mch.weixin.qq.com
Windows: tracert api.mch.weixin.qq.com
1.4 通過mtr確認(rèn)對應(yīng)的路由節(jié)點(diǎn)丟包情況
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'
**這里的輸出需要確認(rèn)有一列的時(shí)間超過3s才有參考意義
2. 自動化工具定位
2.1 運(yùn)行工具命令:
./wxpaymonitor -t
2.2 工具運(yùn)行輸出結(jié)果:
2.3 自動化工具定位說明:
◆ 工具最優(yōu)接入IP建議
從ping測延時(shí)的結(jié)果會按照延時(shí)最低到最高的排序,其中最優(yōu)IP需要與RemoteIp能匹配。如果IP的耗時(shí)為9999.999ms則表示該IP不通,同時(shí)會有i/o timeout的條目提示。如果商戶測試的RemoteIp與該條目錄一致,則可以確認(rèn)存在網(wǎng)絡(luò)異常。
◆ LocalDns相關(guān)的配置建議
從工具測試的結(jié)果,UserIp與LocalDns以及RemoteIp需要屬于同運(yùn)營商,具體IP運(yùn)營商歸屬商戶側(cè)可以通過http://ip.138.om查詢
◆ 接口耗時(shí)說明
Duration:表示此次請求接口總耗時(shí)
Lookup duration:表示此次請求通過DNS解析域名耗時(shí),如果此耗時(shí)比較高,建議確認(rèn)DNS解析是否正常
Connection duration:表示此次請求連接建立耗時(shí),如果此耗時(shí)超過1s,表示網(wǎng)絡(luò)層面TCP連接建立時(shí)間長
Request duration: 表示此次請求在業(yè)務(wù)層面處理的耗時(shí),如果此耗時(shí)超過3s則需要重點(diǎn)排查業(yè)務(wù)處理日志,建議商戶提供具體的單號確認(rèn)問題。
總體來看請求耗時(shí)>連接耗時(shí)>DNS解析耗時(shí),且總體耗時(shí)不超過3s屬正常范圍。
附一:微信支付回調(diào)通知出口IP列表商戶側(cè)對商戶回調(diào)通知功能開通白名單網(wǎng)段:
上海電信出口網(wǎng)段:101.226.103.0/25
上海聯(lián)通出口網(wǎng)段:140.207.54.0/25
上海CAP出口網(wǎng)段:121.51.58.128/25
深圳電信出口網(wǎng)段:183.3.234.0/25
深圳聯(lián)通出口網(wǎng)段:58.251.80.0/25
深圳CAP出口網(wǎng)段:121.51.30.128/25
香港出口網(wǎng)段:203.205.219.128/25
退款結(jié)果通知、分賬動賬通知IP(新增):
175.24.214.208、175.24.211.24、175.24.213.135、109.244.180.23、114.132.203.119、43.139.43.69
常見問題和注意事項(xiàng)
1. 服務(wù)器SSL版本說明
由于低版本的SSL存在高危漏洞,需要確認(rèn)您系統(tǒng)所使用的SSL版本是否需要升級,詳細(xì)說明請見公眾平臺SSL安全策略說明:http://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1414562353&version=11&lang=zh_CN
Java開發(fā)可以參考Oracle網(wǎng)站的說明:[Oracle Java disable SSL3](https://www.oracle.com/java/technologies/javase/instructions-to-mitigate-the-ssl-v30-vulnerability.html)
2. IPV6相關(guān)
如果您的服務(wù)器開啟了IPv6支持,由于當(dāng)前互聯(lián)網(wǎng)對IPv6支持不完整,導(dǎo)致在DNS解析時(shí)通常會碰到超時(shí)問題;
建議在調(diào)用支付API時(shí),顯示指定使用IPv4解析.
PHP程序使用curl調(diào)用參考代碼如下:
if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4'))
{
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
3. 無法連接微信服務(wù)器,訪問api.mch.weixin.qq.com超時(shí)
a. 是否存在跨運(yùn)營商訪問的情況可以ping api.mch.weixin.qq.com查詢對應(yīng)的解析IP
通過訪問ip.138.com獲取出口IP,也可以根據(jù)商戶側(cè)服務(wù)器的外網(wǎng)IP確認(rèn)
b. 確認(rèn)java程序使用的HttpClient的版本是否<=4.3.4
可升級HttpClient到4.3.6版本
c.如有疑問,請通過在線技術(shù)咨詢聯(lián)系我們;
4. 無法與api.mch.weixin.qq.com域名建立SSL鏈接
A: 使用 curl -v https://api.mch.weixin.qq.com/ 查看console輸出1. 看是否獲取到服務(wù)器端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請求的各階段耗時(shí),排查定為異常的階段