您的位置:首页 > 理论基础 > 计算机网络

在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -

2016-05-24 16:19 756 查看
作为总公司IT部门,自然承担着各个分公司的运维技术支持工作,由于公司的性质,分公司经常负责维护这各家官老爷的服务器,同时这些服务器也作为和官老爷数据之间的连接。。。。。。此处省略一万字。
今天分公司就有个负责人发过来一段服务器的报错信息,大致如下“
FireF|y゛ 2016/5/23 15:36:19
日志名称: Application
来源: XXXXX
日期: 2016/5/23 11:47:30
事件 ID: 0
任务类别: 无
级别: 错误
关键字: 经典
用户: 暂缺
计算机: WIN-H48V8MB5TAA
说明:
Timestamp: 2016/5/23 3:47:30
Message: 从MQ:.\private$\dsddataexport 中获取报文写入 SQLSERVER 数据库:XXXXX 时出现异常 ,具体的异常信息为:在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)该服务线程已经停止! 配置信息为:<?xml version="1.0"?><Rule xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema"><MQPath>.\private$\dsddataexport</MQPath><Enabled>true</Enabled><Model>UPDATE</Model><DBType>SQLSERVER</DBType><IP>
10.XX.XX.X </IP><UserName>PDC_USER</UserName><Password>PDC_USER</Password><DataBaseName>XXXXX </DataBaseName></Rule>
Category: General
Priority: 5
EventId: 0
Severity: Error
Title:
Machine: WIN-H48V
Application Domain: XXXXX .exe
Process Id: 21216
Process Name: E:\XXXXX \DSD\DSD\XXXXX \XXXXX .exe
Win32 Thread Id: 20052
Thread Name:
Extended Properties:
事件 Xml:
<Event xmlns="
http://schemas.microsoft.com/win/2004/08/events/event"> <System>
<Provider Name="XXXXX " />
<EventID Qualifiers="0">0</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2016-05-23T03:47:30.000Z" />
<EventRecordID>99</EventRecordID>
<Channel>Application</Channel>
<Computer>WIN-H48V</Computer>
<Security />
</System>
<EventData>
<Data>Timestamp: 2016/5/23 3:47:30
Message: 从MQ:.\private$\dsddataexport 中获取报文写入 SQLSERVER 数据库:XXXXX 时出现异常 ,具体的异常信息为:在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)该服务线程已经停止! 配置信息为:<?xml version="1.0"?><Rule xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema"><MQPath>.\private$\dsddataexport</MQPath><Enabled>true</Enabled><Model>UPDATE</Model><DBType>SQLSERVER</DBType><IP>
10.74.230.75</IP><UserName>PDC_USER</UserName><Password>PDC_USER</Password><DataBaseName>XXXXX </DataBaseName></Rule>
Category: General
Priority: 5
EventId: 0
Severity: Error
Title:
Machine: WIN-H48V
Application Domain: XXXXX .exe
Process Id: 21216
Process Name: E:\XXXXX \DSD\DSD\XXXXX \XXXXX .exe
Win32 Thread Id: 20052
Thread Name:
Extended Properties: </Data>
</EventData>
</Event>



简单看了下报错信息,本以为是传输的问题,但是检查了网络检查了消息队列,并未发现任何异常,以及任何错误信息,看来和传输应该没有关系,

再仔细看了下服务,该服务并不是windows自带服务,而是公司为通过消息队列传输的数据写入到sql2005数据库里面,同时也检查了sql的相关信息,也未发现错误,仔细查看报错信息发现:“远程主机强迫关闭了一个现有的连接。)该服务线程已经停止! ”
这句话是重点所在,我们也可以理解为,当在建立连接时,发现建立连接超过了,无法建立连接,那么应用程式主动关闭了一个连接,

由于该服务由.net编写而成,仔细查阅了下.net数据连接池的概念,发现.net默认最大的连接数为100,且默认为ture状态,那么如果在编写代码的时候没有定义该连接池,长时间使用后连接池没有释放,就会产生该问题,

需要在代码中加入
pooling=false
or Max Pool Size的值,
接下来的事情就是让分公司人员去找对应的开发人员,修改其代码进行定义,OK!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  net 线程 连接数