C# 超时已过期。操作完成前已过超时时间,或者服务器没有响应。从数据库中获取记录时
在我的数据库中,我的网站每天有200万用户,而从数据库中获取数据时,我发现上面的错误。 我以前收到服务器不可用错误,但现在看到连接超时错误。 我不熟悉这一点-为什么会发生,我如何修复它C# 超时已过期。操作完成前已过超时时间,或者服务器没有响应。从数据库中获取记录时,c#,mysql,asp.net,3-tier,C#,Mysql,Asp.net,3 Tier,在我的数据库中,我的网站每天有200万用户,而从数据库中获取数据时,我发现上面的错误。 我以前收到服务器不可用错误,但现在看到连接超时错误。 我不熟悉这一点-为什么会发生,我如何修复它 at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.N
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at MySql.Data.Common.MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
--- End of inner exception stack trace ---
at MySql.Data.Common.MyNetworkStream.HandleOrRethrowException(Exception e)
at MySql.Data.Common.MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
at MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
at MySql.Data.MySqlClient.MySqlStream.LoadPacket()
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)```
原因很多:
查询的执行时间太长。随着表的大小增加,由于设计不当,查询速度越来越慢。检查这是否发生在执行特定查询或表的过程中,以缩小调查范围
网络问题。这些是由于连接问题导致的错误。网络不稳定等。应与您的提供商或管理员联系。
返回大量数据。如果您试图将数百万行返回给c调用程序,则可能是提取时间太长。尝试使用分页或通过选择顶部的X行来限制行
如果没有更多的信息,比如查询失败、所述表的数据库模式和索引,或者服务的状态,就很难判断。以上是我见过的最常见的案例
您还可以检查死锁和活锁