在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -相关的知识,希望对你有一定的参考价值。
作为总公司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!
本文出自 “低调的IT民工” 博客,请务必保留此出处http://vicent.blog.51cto.com/287372/1782559
以上是关于在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -的主要内容,如果未能解决你的问题,请参考以下文章
在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -