今天有同窗在測試小程序的過程當中,發現一個問題,調用 微信官方的服務端接口超時 ,好比這個接口,https://api.weixin.qq.com/sns/jscode2session
,由於咱們小程序登陸的時候,會在本身server端調用微信的API,這個接口超時,致使咱們的登陸流程也就掛掉了。原本覺得是偶爾的網絡問題,可是,同窗發如今測試服務器上,很穩定的復現超時!可是在咱們本地測試過程當中,請求微信服務器又很快響應。嗯,理論上微信服務器不會出問題的……shell
試着在服務器上去 curl
微信的接口,確實挺慢的,咱們代碼裏配置了超時是3秒,目測確實超過了3秒才返回!抱着僥倖的想法,讓同窗把超時改爲5秒,依然超時……嗯,略微有點尷尬。小程序
試着 ping api.weixin.qq.com
,發現收到第一個包,隔着挺長時間,後面的包平均幾十毫秒,網絡應該也沒問題吧。api
沒辦法了,由於是服務端,只能用 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"
複製代碼
拿到的結果以下:微信
在網上查閱了下,各個字段含義以下(單位都是 秒 ):網絡
https://zhihu.com
轉換成 ip 地址的過程從上面截圖中能夠看出,咱們服務器上,在DNS域名解析階段,就花了 5秒 ,難怪會超時了……session
找到了問題,那就先在機器上修改 /etc/hosts
文件,寫死一個微信域名的IP解析,暫時 把這個問題修復了。app