.net鏈接mysql庫, 每天都能收到如下報錯:
2017-05-05 11:03:41.0596 [ThreadID:3] Error: 發生錯誤.
2017-05-05 11:03:41.0752 [ThreadID:3] Error: MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. ---> System.IO.IOException: 無法從傳輸連接中讀取資料: 遠程主機強迫關閉了一個現有的連接。。 ---> System.Net.Sockets.SocketException: 遠程主機強迫關閉了一個現有的連接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- 內部例外堆疊跟蹤的結尾 ---
在 MySql.Data.Common.MyNetworkStream.HandleOrRethrowException(Exception e)
在 MySql.Data.Common.MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
在 MySql.Data.MySqlClient.NativeDriver.Open()
在 MySql.Data.MySqlClient.Driver.Open()
在 MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
在 MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
在 MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
在 MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
在 MySql.Data.MySqlClient.MySqlPool.GetConnection()
在 MySql.Data.MySqlClient.MySqlConnection.Open()
在 MySql.Data.MySqlClient.MySqlHelper.ExecuteDataset(String connectionString, String commandText, MySqlParameter[] commandParameters)
在 TestMysql.TestProcess.GetCountDayList() 位置 e:\TFSROOT\test\TestMysql\TestMysql\TestProcess.cs:行號 365
在 TestMysql.TestProcess.Process() 位置 e:\TFSROOT\test\TestMysql\TestMysql\TestProcess.cs:行號 61
在 TestMysql.TestProcess.Run() 位置 e:\TFSROOT\test\TestMysql\TestMysql\TestProcess.cs:行號 43
2017-05-05 11:03:41.0752 [ThreadID:3] Error: InnerException:
2017-05-05 11:03:41.0752 [ThreadID:3] Error: System.IO.IOException: 無法從傳輸連接中讀取資料: 遠程主機強迫關閉了一個現有的連接。。 ---> System.Net.Sockets.SocketException: 遠程主機強迫關閉了一個現有的連接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- 內部例外堆疊跟蹤的結尾 ---
在 MySql.Data.Common.MyNetworkStream.HandleOrRethrowException(Exception e)
在 MySql.Data.Common.MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
2017-05-05 11:03:41.0908 [ThreadID:3] Error: InnerException:
2017-05-05 11:03:41.0908 [ThreadID:3] Error: System.Net.Sockets.SocketException (0x80004005): 遠程主機強迫關閉了一個現有的連接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
使用的鏈接字串:
<add name="default" connectionString="server=xx.xx.xx.xx;user id=xx;password=xx;port=xx;database=xx;Convert Zero Datetime=True;Allow Zero Datetime=True;" />
uj5u.com熱心網友回復:
看下mysql的錯誤日志uj5u.com熱心網友回復:
也在糾結這個問題,服務端沒問題,沒找到重現方法如果樓主有重問題現方法,可以弄出來研究
uj5u.com熱心網友回復:
錯誤日志里并沒有看到和這個相關的錯誤。uj5u.com熱心網友回復:
@zjcxc 這個是偶然現象, 很難必然的重現。 目前懷疑和連接池有關uj5u.com熱心網友回復:
試試把 net_write_timeout 設定大一些uj5u.com熱心網友回復:
https://www.cnblogs.com/CtripDBA/p/9778351.html有人找到問題了,跟mysql的連接超時有關系。
方法1:修改mysql組態檔my.cnf ,新增connect_timeout=60
默認10秒,增加到60秒就可以了。
方法2:修改驅動原始碼,文章中就是這么做的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/195463.html
標籤:MySQL
