今天有同學在測試小程序的過程中,發現一個問題,調用 微信官方的服務端接口超時 ,比如這個接口,https://api.weixin.qq.com/sns/jscode2session ,因為我們小程序登錄的時候,會在自己server端調用微信的API,這個接口超時,導致我們的登錄流程也就掛掉了。本來以為是偶爾的網絡問題,但是,同學發現在測試服務器上,很穩定的復現超時!但是在我們本地測試過程中,請求微信服務器又很快響應。嗯,理論上微信服務器不會出問題的……
試著在服務器上去 curl 微信的接口,確實挺慢的,我們代碼里配置了超時是3秒,目測確實超過了3秒才返回!抱著僥幸的想法,讓同學把超時改成5秒,依然超時……嗯,略微有點尷尬。
試著 ping api.weixin.qq.com
,發現收到第一個包,隔著挺長時間,后面的包平均幾十毫秒,網絡應該也沒問題吧。
沒辦法了,因為是服務端,只能用 curl,想看看這個工具能不能提供一下,整個請求的各個階段,時間是怎么分布的。搜了一下,還真有這個功能,具體操作如下:
在某個目錄下,新建一個文件,比如 curl-format.txt ,內容如下:
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
在同一個目錄下,執行 curl 操作:
curl -w "@curl-format.txt" -o /dev/null -s "https://api.weixin.qq.com/sns/jscode2session?xxx=xxx&xx=aa"
拿到的結果如下:
在網上查閱了下,各個字段含義如下(單位都是 秒 ):
從上面截圖中可以看出,我們服務器上,在DNS域名解析階段,就花了 5秒 ,難怪會超時了……
找到了問題,那就先在機器上修改 /etc/hosts 文件,寫死一個微信域名的IP解析,暫時 把這個問題修復了。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com