通信链路失败(||)线程被中止

本文关键字:线程 失败 通信 链路 | 更新日期: 2023-09-27 18:12:42

我面临以下问题:

一些用户在使用我的web应用程序时抱怨:

我遇到的错误是:
IP: System.Web.HttpApplicationState
Agent: IE8
AgentDtails : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)
Refrer: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-acf208dd67ac
Plateform: WinXP
05/09/2013 09:20:37
Error in: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-acf208dd67ac
 Error Message:
 Error Message: Thread was being aborted.

,有时:

Error Message:ERROR [08S01] [Informix .NET provider]Communication link failure.

 Error Code: -11020
 MEssage: [Informix .NET provider]Communication link failure.

这些错误不是来自特定的页面或方法。我不时地从不同的页面随机得到这些错误!!


我的连接字符串是:

 <add key="connection" value="User Id=XXX;Password=XXXX;Host=aa1;Server=st1;Service=st1;Database=doc; Client Locale=ar_ae.1256; Database Locale=ar_ae.8859-6; Protocol=olsoctcp;pooling=true;Min Pool Size=4;Max Pool Size=200;"/>

通信链路失败(||)线程被中止

我看到您使用了池。它提高了性能,因为您确实需要将do DB与每个HTTP请求连接起来,但这样的池必须容易出错。如果您的环境中的某些东西(路由器、防火墙)会认为数据库服务器和数据库池之间持久且不活跃的连接确实已经死亡并且可以断开连接,那么就会出现问题。当您尝试使用该连接时,db池认为该连接是可用的,但是该连接已关闭并且不可用。

如何防止此类错误取决于池。一些池有特殊的查询来检查连接是否处于活动状态。您将只获得已检查成功的连接。有些池有超时时间,如果在此时间内未使用连接,则会释放连接。您必须阅读更多关于您使用的池和配置它的信息。你没有说明你使用的是哪个版本的。net客户端。在版本3.70的"IBM Informix .NET提供商参考指南"中,我发现:

使用Pool、Max Pool Size、Connection Life Time和Min Pool Size用于控制连接池的连接字符串属性。

Idle Timeout内部参数是用于删除的标准协议连接池,并阻止连接保持活动状态无限期地在服务器中。"空闲超时时间"的值为120秒,不能设置通过在连接字符串中设置新值进行更改。与空闲超时,当如果连接池中有超过120秒未使用的连接,则会触发此告警连接被关闭并从池中删除。

对我来说2分钟是好的,但也许你使用其他版本的客户端与不同的设置?