【问题标题】:Communication link failure (||) Thread was being aborted通信链路故障 (||) 线程被中止
【发布时间】:2013-05-09 08:37:38
【问题描述】:

我面临以下问题:

一些用户在尝试我的网络应用程序时抱怨:

我遇到的错误是:

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

【问题讨论】:

    标签: c# asp.net performance iis informix


    【解决方案1】:

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

    如何防止此类错误取决于池。一些池有特殊的查询来检查连接是否存在。您将仅获得已成功检查的连接。一些池有超时时间,如果在该时间未使用连接,则将其释放。您将不得不阅读有关您使用和配置它的池的更多信息。您没有显示您使用的 .NET 客户端版本。在版本 3.70 的“IBM Informix .NET Provider Reference Guide”中,我发现:

    您使用池化、最大池大小、连接生命周期和最小池大小 连接字符串属性来控制连接池。

    Idle Timeout 内部参数是用于移除的标准协议 池中的连接并防止连接保持活动状态 无限期地在服务器中。 Idle Timeout 的值为 120 秒,不能 通过在连接字符串中设置新值来更改。使用空闲超时,当 连接池中的连接未使用时间超过 120 秒,则 连接已关闭并从池中删除。

    对我来说 2 分钟很好,但也许您使用具有不同设置的其他版本的客户端?

    【讨论】:

      猜你喜欢
      • 2012-05-27
      • 2018-02-17
      • 2012-10-14
      • 2011-08-12
      • 1970-01-01
      • 2012-02-21
      • 2014-12-31
      • 2011-02-28
      • 2020-04-24
      相关资源
      最近更新 更多