远程主机强迫关闭了一个现有的连接

时间:2023-02-07 23:49:57
麻烦各位大侠帮忙看看是否有遇到过这个问题,原因是什么,解决的思路是什么。
十分感谢:

情况描述:

网站部署在一个服务器上,数据库在另一个网段的服务器上,并且数据库是mysql在一个服务器上一兆独享的带宽。
网站经常报这个错误,过好长一段时间又好了,然后点几下页面就又挂了。

地址:http://122.70.154.189/

请帮忙看看,十分感谢。


[SocketException (0x2746): 远程主机强迫关闭了一个现有的连接。]
   System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) +73
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +131

[IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。]
   MyNetworkStream.HandleOrRethrowException(Exception e) +127
   MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) +70
   MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count) +89
   System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count) +195
   MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count) +42
   MySql.Data.MySqlClient.MySqlStream.LoadPacket() +70

[MySqlException (0x80004005): Reading from the stream has failed.]
   MySql.Data.MySqlClient.MySqlStream.LoadPacket() +265
   MySql.Data.MySqlClient.MySqlStream.ReadPacket() +16
   MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId) +73
   MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId) +20
   MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) +88
   MySql.Data.MySqlClient.MySqlDataReader.NextResult() +113

[MySqlException (0x80004005): Fatal error encountered attempting to read the resultset.]
   MySql.Data.MySqlClient.MySqlDataReader.NextResult() +357
   MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +632

[MySqlException (0x80004005): Fatal error encountered during command execution.]
   MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +947
   MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +36
   MySql.Data.MySqlClient.Driver.Configure(MySqlConnection connection) +659
   MySql.Data.MySqlClient.MySqlConnection.Open() +375
   Hangjing.DBUtility.DBMySqlHelper.PrepareCommand(MySqlConnection conn, MySqlTransaction trans, MySqlCommand cmd, CommandType cmdType, String cmdText, MySqlParameter[] cmdParms) in E:\HangjingCode\FanShiGang\DBUtility\DBMySqlHelper.cs:891
   Hangjing.DBUtility.DBMySqlHelper.ExecuteReader(CommandType commandType, String commandText, MySqlParameter[] commandParameters) in E:\HangjingCode\FanShiGang\DBUtility\DBMySqlHelper.cs:933
   Hangjing.MySqlDAL.Links.GetList(Int32 pagesize, Int32 pageindex, String strWhere, String orderName, Int32 orderType) in E:\HangjingCode\FanShiGang\MySqlDAL\Links.cs:159
   Foot.BindLinks() +59
   Foot.Page_Load(Object sender, EventArgs e) +24
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

4 个解决方案

#1


http://www.google.com.hk/#hl=zh-CN&source=hp&q=%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E5%BC%BA%E8%BF%AB%E5%85%B3%E9%97%AD%E4%BA%86%E4%B8%80%E4%B8%AA%E7%8E%B0%E6%9C%89%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82&oq=%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E5%BC%BA%E8%BF%AB%E5%85%B3%E9%97%AD%E4%BA%86%E4%B8%80%E4%B8%AA%E7%8E%B0%E6%9C%89%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82&aq=f&aqi=&aql=f&gs_sm=e&gs_upl=235l641l0l2l2l0l0l0l0l203l328l0.1.1l2&fp=15565c0f28dd90de&biw=1192&bih=589

#2


呵呵 这个搜索找出来没有找到原因所以才想到劳烦大家的。给点建设性的意见。

#3


引用楼主 zjfazh 的回复:
并且数据库是mysql在一个服务器上一兆独享的带宽。


什么意思?一兆独享的带宽?那么你说的是下行一兆了?上行多少?

你们是否会真的做一个业务服务器呢?

#4


现在是这样的 一个服务器放程序 一个服务器放数据库 数据库还有其他一套系统访问的。
一兆带宽这个上行下行我还真不懂
目前改了一个东西居然正常了 
就是mysql的链接字符串中有一个charset 原先我是写的gb2312 ,数据库服务器后面查了用的是utf8
改成utf8后居然正常了。不知道为什么,为什么报的错如此不堪

#1


http://www.google.com.hk/#hl=zh-CN&source=hp&q=%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E5%BC%BA%E8%BF%AB%E5%85%B3%E9%97%AD%E4%BA%86%E4%B8%80%E4%B8%AA%E7%8E%B0%E6%9C%89%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82&oq=%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E5%BC%BA%E8%BF%AB%E5%85%B3%E9%97%AD%E4%BA%86%E4%B8%80%E4%B8%AA%E7%8E%B0%E6%9C%89%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82&aq=f&aqi=&aql=f&gs_sm=e&gs_upl=235l641l0l2l2l0l0l0l0l203l328l0.1.1l2&fp=15565c0f28dd90de&biw=1192&bih=589

#2


呵呵 这个搜索找出来没有找到原因所以才想到劳烦大家的。给点建设性的意见。

#3


引用楼主 zjfazh 的回复:
并且数据库是mysql在一个服务器上一兆独享的带宽。


什么意思?一兆独享的带宽?那么你说的是下行一兆了?上行多少?

你们是否会真的做一个业务服务器呢?

#4


现在是这样的 一个服务器放程序 一个服务器放数据库 数据库还有其他一套系统访问的。
一兆带宽这个上行下行我还真不懂
目前改了一个东西居然正常了 
就是mysql的链接字符串中有一个charset 原先我是写的gb2312 ,数据库服务器后面查了用的是utf8
改成utf8后居然正常了。不知道为什么,为什么报的错如此不堪