我的團隊從以下位置遷移了一個古老的應用程式:
AWS Elastic Compute Cloud instance
Windows Server 2019
IIS
.NET Core 2.2
Public subnets with an Internet Gateway
到
AWS Elastic Container Service (Fargate) task
Amazon Linux 2
Kestrel
.NET 6
Private subnets with no internet access at all
我們還在安全組、IAM 權限和其他途徑中廣泛加強了安全性。需要進行如此多的更改,以至于很難確定哪里出了問題。
我們開始遇到來自我們網站的隨機 500(由 Kestrel 直接回傳)、502(來自 Application Load Balancer)和 504(完全超時,來自 Application Load Balancer)。沒有明顯的原因。所有 API 呼叫似乎都表現出這種行為,似乎是隨機的。
深入挖掘,我們發現了這樣的錯誤:
---> System.Net.Sockets.SocketException (0xFFFDFFFE): Unknown socket error
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state)
--- End of stack trace from previous location ---
at System.Net.Sockets.TcpClient.CompleteConnectAsync(Task task)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at MySql.Data.Common.StreamCreator.GetTcpStream(MySqlConnectionStringBuilder settings, MyNetworkStream& networkStream)
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at -my code happens here-
不過,我懷疑這個問題不僅僅是我們的 MySQL RDS 連接。502s 和 504s 表明有時 Kestrel 也無法正確回應請求,就好像它也遇到了類似的問題一樣。但是,至少在其默認設定下,它不會記錄任何與此有關的錯誤。
uj5u.com熱心網友回復:
終于經過大量除錯。我們能夠找出真正的根本原因。當請求失敗時,我們有時會收到以下錯誤。

我的隊友拿走了這個日志,并通過洗掉用于視窗服務器的 SafeFileHandle 找到了問題的解決方案。

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442993.html
標籤:mysql 亚马逊网络服务 asp.net 核心 插座 .net-core
上一篇:客戶端的兩個不同路徑的socket連接與第二個連接重疊
下一篇:名冊的配額腳本
