2013-05-09 55 views
1

我面临着以下问题:通信链路故障(||)正在中止线程

我遇到的错误是::

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. 

一些用户在尝试我的web应用程序抱怨

有的时候:

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;"/> 

回答

3

我看到你用池。它提高了性能,因为您需要连接每个HTTP请求来连接数据库,但这样的池必须容易出错。如果环境中的某些内容(路由器,防火墙)会认为数据库服务器和数据库池之间的持续不活动连接确实已经死机并且可以断开连接,则会出现问题。然后你尝试使用这种连接,数据库池认为这样的连接是好的和可用的,但它已关闭并且不可用。

如何防止这种错误是依赖于池的。一些游泳池有特殊的查询来检查连接是否存在。您将只获得通过成功检查的连接。一些池有超时时间,如果连接没有被使用,那么它会被释放。你将不得不阅读更多关于你使用的池并配置它。您没有显示您使用的.NET客户端的版本。在“IBM Informix的.NET提供参考指南” 3.70版本,我发现:

您使用池,最大池大小,连接生命时间和闵池大小 连接字符串属性来控制连接池。

空闲超时内部参数是标准协议用于去除从池中 连接,并防止在服务器无限期剩余的活性 连接。空闲超时值为120秒,通过在连接字符串中设置新值,不能更改为 。使用空闲超时时,如果连接池中的连接未使用超过120秒,则 连接将关闭并从池中删除。

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