几分钟后ASP.NET MVC + NHibernate + Oracle应用程序中的连接问题

时间:2014-06-19 21:17:44

标签: asp.net nhibernate oracle11g

首先,我们有一个使用NHibernate(版本3)和Oracle 11g数据库的MVC Web应用程序。

应用程序正在运行,但是当我们在生产服务器上发布时,会出现一个奇怪的情况:

  1. 用户访问应用程序并执行任务,例如,选择菜单中的链接。
  2. 用户等待几分钟(2-3分钟)。
  3. 用户执行其他任务,例如,重新加载同一页面或在菜单中选择另一个链接。
  4. 应用程序因ORA-12571: TNS:packet writer failure例外而失败。
  5. 用户只需刷新错误页面即可运行。
  6. 我们尝试做的第一件事是隔离问题,因此我们将应用程序发布到具有完全相同配置的另一台服务器中:

    1. 当然是相同的二进制文件。
    2. 相同的Oracle x64客户端版本,即使是次要版本。
    3. 与IIS 7.5相同的Windows Server 2008版本。
    4. 相同的IIS配置(我们使用WinMerge比较了windows / system32 / inetsrv / config文件)。
    5. 访问相同生产数据库。
    6. 令我们惊讶的是,我们无法重现这个问题。

      请有人知道发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

问题与服务器的oracle客户端的连接池有关。它似乎正在向Web应用程序提供无效连接,而在其他服务器中它不会发生。

解决方案不是很有趣,但将Validate Connection = True放在连接字符串中解决了问题。我知道这对性能的影响,但我没有选择。

PS:使用此标志,每个连接都由连接池服务验证,然后为客户端应用程序提供。这不是很好,因为每次连接请求都会发生数据库往返。