阿里雲服務器調用微信接口受限--關於DNS的

最近遇到個問題。一個已經上線了幾個月的微信公衆號,最近一段時間在受權頁面哪裏卡住了。 首先我懷疑是代碼的問題。由於聽說是最近更新了受權類的代碼。因而我從svn上下載最新的代碼進行調試,沒問題。 這裏簡單介紹一下微信公衆號本地調試的辦法(微信小程序也相似)。 一、下載開發者工具 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140 二、Eclise把對應的tomcat的端口號設置爲80端口 若是正式環境是部署在ROOT即直接域名訪問項目,url不帶工程名的話。在Eclise裏面能夠這樣設置。 輸入圖片說明web

三、修改本地host window的在C:\Windows\System32\drivers\etc\hosts 增長 127.0.0.1 你的域名 四、在微信公衆號後臺把你的微信添加到開發者。小程序

而後就能夠在本地使用微信開發者web工具調試你的本地代碼了。微信小程序

好了,言歸正傳。通過調試代碼是沒有問題的。而後查看服務器上的日誌。發現httpclient的鏈接池日誌顯示沒有空閒的連接。覺得是流量增大原來設置的鏈接數不夠用致使卡死。當時同事反映的問題是每次重啓tomcat以後大概半天這樣就會出現問題。因而增大鏈接池數量,設置連接超時爲6秒。 之後記得使用httpclient的鏈接池必定要設置超時時間。要否則會致使連接一直得不到釋放和掩蓋問題緣由。改完以後再次上線。系統能夠正常進行受權,可是比較卡頓。api

半天事後,老闆再次打電話給我,系統徹底卡死了,徹底受權不了。查看日誌,此次因爲添加了超時時間,在日誌裏面很明顯能夠看到是因爲使用受權返回來的code調用微信的接口獲取openid的時候連接超時了。在服務器上ping api.weixin.qq.com 發現丟包嚴重,每次lost package在50%以上。詭異的事情發生了,ping www.baidu.com徹底正常。在另一臺服務器上ping api.weixin.qq.com也徹底正常。這時候你們都比較鬱悶了。就要打算把程序遷移服務器的時候。我想到通常大型的網站的DNS解析不止一個ip地市。若是我把api.weixin.qq.com的地址指向別的地區的ip地址是否可行,雖然DNS會自動把域名解析到最近的服務器的ip,可是走遠一點起碼比走不通要好吧。tomcat

因而發現兩臺服務器ping api.weixin.qq.com解析出來的ip地址果真不同。修改服務器的host。強行把域名指向別的ip地址,問題解決。服務器

此次故障到底是阿里雲的服務器DNS解析出了問題呢?仍是微信那邊的這個ip地址出了問題?仍是個人服務器DNS被劫持了呢?就不知道了。微信

另外,服務器最近不少被挖礦之類的告警。有錢仍是得花錢給阿里雲買個雲盾防禦的吧。畢竟使用阿里雲服務器最大的好處就是不用本身維護服務器,不花點錢,被人攻擊什麼的就很差了。微信開發

相關文章
相關標籤/搜索