避免負載平衡器後面的伺服器故障

避免負載平衡器後面的伺服器故障

環境

我們正在運行一個與 Twitter API 互動的解決方案。 Twitter API 端點是:

api.twitter.com

我們對端點進行了多次調用,但很少遇到 Twitter 定義的 API 限制。

我推測 Twitter 在該 URL 上設定了負載平衡器,並在內部重定向到不同的電腦。

該解決方案是一個 .Net 應用程序,部分是執行資料輪詢的可執行文件,以及用於回覆和發布推文的 Web 應用程式。

問題

每週一次(有時更多),持續幾個小時,我們會從可執行檔和 Web 應用程式的日誌檔案中記錄以下異常。

Inner Exception : System.Net.WebException: Unable to connect to the remote    
server ---> System.Net.Sockets.SocketException: A connection attempt failed 
because the connected party did not properly respond after a period of time, 
or established connection failed because connected host has failed to 
respond 185.45.5.33:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at Hammock.Web.WebQuery.ExecuteGetDeleteHeadOptions(WebRequest request, WebException& exception) in f:\src\hammock\src\net35\Hammock\Web\WebQuery.cs:line 1021

... Ommited rest of exception ...

NSLOOKUP當我從伺服器本身執行時,我得到以下結果

>nslookup api.twitter.com
Server:  4201082000200000000g00g021.ip.ssc.net
Address:  2001:820:2::9:218

Non-authoritative answer:
Name:    api.twitter.com
Addresses:  185.45.5.33
            185.45.5.44

每次我進行此查找時,185.45.5.33都會列出故障的伺服器,並且僅存在一個備用 IP 位址。

注意:我們只有來自生產伺服器的這兩個 IP 位址,來自其他電腦(位於不同國家)的nslookupIP 位址在 199.* 範圍內至少傳回 4 個 IP 位址。

>nslookup api.twitter.com
Server:  kdns1.task.gda.pl
Address:  213.192.64.1

Non-authoritative answer:
Name:    api.twitter.com
Addresses:  199.16.156.104
          199.16.156.72
          199.16.156.231
          199.16.156.8

解決方案 ?

我曾嘗試在這些錯誤期間使用C:\Windows\System32\Drivers\etc\hosts此行編輯文件

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
    185.45.5.44     api.twitter.com

但這似乎不起作用,問題仍在繼續。儘管問題可能出在 Twitter 的伺服器上,但它確實破壞了我們的功能,導致完全停止工作。因此,我們需要更加積極主動,而不是等到 Twitter 解決問題。

這可能不是解決這個問題的最好方法,但我們有目前。我們招募了一位擅長處理這些營運問題的人,但他不會在 12 月之前開始工作。因此,對於經驗有限的人來說,如果能找到一個臨時解決方案來解決這個問題,我們將不勝感激。

那麼,是否有人有建議或線索可以幫助我們以盡可能最好的方式解決這個問題?

我不介意直接閱讀文章,但朝著正確的方向進行引導或推動將會有很大的幫助。

感謝您的時間

答案1

簡短的回答:不。

除了通知使用者有上游問題之外,您幾乎無法採取任何措施來緩解第三方提供者的問題。

您可以顯示描述性錯誤訊息,例如“與 Twitter 通訊時出現問題,請稍等。”,或者默默地丟棄錯誤並在一段時間後重試。

對於較長時間的中斷,我建議在應用程式內向全球用戶顯示通知。

除此之外,我嚴重懷疑 Twitter 的 API 有這麼多問題 - 您可能在某種程度上受到速率限制。我強烈建議您聯繫 Twitter 並提出支持案例。

相關內容