小程序server請(qǐng)求微信服務(wù)器超時(shí)的解決方法
今天有同學(xué)在測(cè)試小程序的過(guò)程中,發(fā)現(xiàn)一個(gè)問(wèn)題,調(diào)用 微信官方的服務(wù)端接口超時(shí) ,比如這個(gè)接口,https://api.weixin.qq.com/sns/jscode2session ,因?yàn)槲覀冃〕绦虻卿浀臅r(shí)候,會(huì)在自己server端調(diào)用微信的API,這個(gè)接口超時(shí),導(dǎo)致我們的登錄流程也就掛掉了。本來(lái)以為是偶爾的網(wǎng)絡(luò)問(wèn)題,但是,同學(xué)發(fā)現(xiàn)在測(cè)試服務(wù)器上,很穩(wěn)定的復(fù)現(xiàn)超時(shí)!但是在我們本地測(cè)試過(guò)程中,請(qǐng)求微信服務(wù)器又很快響應(yīng)。嗯,理論上微信服務(wù)器不會(huì)出問(wèn)題的……
試著在服務(wù)器上去 curl 微信的接口,確實(shí)挺慢的,我們代碼里配置了超時(shí)是3秒,目測(cè)確實(shí)超過(guò)了3秒才返回!抱著僥幸的想法,讓同學(xué)把超時(shí)改成5秒,依然超時(shí)……嗯,略微有點(diǎn)尷尬。
試著 ping api.weixin.qq.com ,發(fā)現(xiàn)收到第一個(gè)包,隔著挺長(zhǎng)時(shí)間,后面的包平均幾十毫秒,網(wǎng)絡(luò)應(yīng)該也沒問(wèn)題吧。
沒辦法了,因?yàn)槭欠?wù)端,只能用 curl,想看看這個(gè)工具能不能提供一下,整個(gè)請(qǐng)求的各個(gè)階段,時(shí)間是怎么分布的。搜了一下,還真有這個(gè)功能,具體操作如下:
在某個(gè)目錄下,新建一個(gè)文件,比如 curl-format.txt ,內(nèi)容如下:
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_pretransfer: %{time_pretransfer}\n
time_redirect: %{time_redirect}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
在同一個(gè)目錄下,執(zhí)行 curl 操作:
curl -w "@curl-format.txt" -o /dev/null -s "https://api.weixin.qq.com/sns/jscode2session?xxx=xxx&xx=aa"
拿到的結(jié)果如下:

在網(wǎng)上查閱了下,各個(gè)字段含義如下(單位都是 秒 ):
- time_namelookup: DNS 域名解析的時(shí)候,就是把 https://zhihu.com 轉(zhuǎn)換成 ip 地址的過(guò)程
- time_connect: TCP 連接建立的時(shí)間,就是三次握手的時(shí)間
- time_appconnect: SSL/SSH 等上層協(xié)議建立連接的時(shí)間,比如 connect/handshake 的時(shí)間
- time_pretransfer: 從開始到最后一個(gè)請(qǐng)求事務(wù)的時(shí)間
- time_redirect: 從請(qǐng)求開始到響應(yīng)開始傳輸?shù)臅r(shí)間
- time_starttransfer: 從請(qǐng)求開始到第一個(gè)字節(jié)將要傳輸?shù)臅r(shí)間
- time_total: 這次請(qǐng)求花費(fèi)的全部時(shí)間
從上面截圖中可以看出,我們服務(wù)器上,在DNS域名解析階段,就花了 5秒 ,難怪會(huì)超時(shí)了……
找到了問(wèn)題,那就先在機(jī)器上修改 /etc/hosts 文件,寫死一個(gè)微信域名的IP解析,暫時(shí) 把這個(gè)問(wèn)題修復(fù)了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決mysql服務(wù)器在無(wú)操作超時(shí)主動(dòng)斷開連接的情況
- php中curl和soap方式請(qǐng)求服務(wù)超時(shí)問(wèn)題的解決
- 淺談java中異步多線程超時(shí)導(dǎo)致的服務(wù)異常
- 詳解Nginx服務(wù)器中配置超時(shí)時(shí)間的方法
- Win7系統(tǒng)日志提示在沒有配置的 DNS 服務(wù)器響應(yīng)之后,名稱“域名”的名稱解析超時(shí)的解放方法
- oracle遠(yuǎn)程連接服務(wù)器出現(xiàn) ORA-12170 TNS:連接超時(shí) 解決辦法
- 使用FileZilla連接時(shí)超時(shí)無(wú)法連接到服務(wù)器
- SNMP4J服務(wù)端連接超時(shí)問(wèn)題解決方案
相關(guān)文章
基于javascript實(shí)現(xiàn)精確到毫秒的倒計(jì)時(shí)限時(shí)搶購(gòu)
現(xiàn)如今做電商網(wǎng)站必不可少的一個(gè)效果就是限時(shí)搶購(gòu),這也是各大電商網(wǎng)站的一種促銷手段。如何實(shí)現(xiàn)倒計(jì)時(shí)限時(shí)搶購(gòu),本文為大家分享了javascript實(shí)現(xiàn)倒計(jì)時(shí)限時(shí)搶購(gòu)的的相關(guān)代碼,感興趣的小伙伴們可以參考一下2016-04-04
javascript jscroll模擬html元素滾動(dòng)條
這里是自己在工作不太忙的時(shí)候?qū)懗鰜?lái)了一個(gè)用戶可以自定義的滾動(dòng)條jscroll,以下簡(jiǎn)稱jscroll。jscroll默認(rèn)只提供一種滾動(dòng)條樣式,部分樣式來(lái)自google webstore ,其中有部分css3樣式主要用于實(shí)現(xiàn)圓角,陰影效果2012-12-12
JavaScript?Array.from及其相關(guān)用法詳解(示例演示)
Array.from方法是ES6引入的一個(gè)靜態(tài)方法,用于從類數(shù)組對(duì)象或可迭代對(duì)象創(chuàng)建一個(gè)新的數(shù)組實(shí)例,本文將詳細(xì)介紹Array.from的基本用法、實(shí)際場(chǎng)景中的應(yīng)用,以及它如何與其他JavaScript特性相結(jié)合提升代碼的簡(jiǎn)潔性和可讀性,感興趣的朋友一起看看吧2025-03-03
uniapp時(shí)間格式和距離格式的轉(zhuǎn)換
這篇文章主要介紹了uniapp時(shí)間格式和距離格式的轉(zhuǎn)換,第一種是把? YYYY-MM-DD hh:mm:ss 轉(zhuǎn)換成?MM月DD日,第二種是把? hh:mm:ss 轉(zhuǎn)換成?hh:mm,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
微信小程序之側(cè)邊欄滑動(dòng)實(shí)現(xiàn)過(guò)程解析(附完整源碼)
這篇文章主要介紹了微信小程序之側(cè)邊欄滑動(dòng)實(shí)現(xiàn)過(guò)程解析(附完整源碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效
這篇文章主要為大家詳細(xì)介紹了基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Javascript生成全局唯一標(biāo)識(shí)符(GUID,UUID)的方法
本文給大家匯總介紹了5種使用javascript實(shí)現(xiàn)全局唯一標(biāo)識(shí)符(GUID,UUID)的方法,非常的全面,有需要的小伙伴可以來(lái)參考下2016-02-02
js實(shí)現(xiàn)消滅星星(web簡(jiǎn)易版)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)web簡(jiǎn)易版的消滅星星,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03

