TinyTds错误:Adaptive Server连接超时

时间:2014-12-05 09:09:48

标签: ruby-on-rails ruby sql-server tiny-tds

我们正在使用当前tinyTDS gem 0.6.2在rails 3.2.12(ruby 1.9.3)上的rails应用程序上运行ruby。

我们使用MS SQL 2012或2014,面对更常见的以下错误消息:

TinyTds::Error: Adaptive Server connection timed out: EXEC sp_executesql [...]

数据库AUTOCLOSE已关闭。 TCP套接字超时是默认的Windows系统。

应用程序服务器位于计算机#1(Windows服务器)上,SQL服务器位于计算机#2(Windows服务器)上。

当我检查连接(netstat)时,我想为大约20-30个用户打开250个连接。 我运行perform.exe来查看SQL服务器上的数据和日志磁盘的空闲时间。

database.yml有连接pool:32reconnect:true

对我而言,看起来tinyTDS失去连接,任何异常都无法重新连接。

问题是,如何调试问题以找出问题所在?

更新

我的错误,原始错误消息属于tinytDS 0.5.x.自从我更新到最新版本后,我还得到了以下错误:

ActiveRecord::LostConnection (TinyTds::Error: DBPROCESS is dead or not enabled: BEGIN TRANSACTION):

1 个答案:

答案 0 :(得分:3)

首先,该池大小似乎过多。你使用了大量的线程吗?如果没有,则每个应用请求/响应仅使用一个连接。看起来这个价值很高。

第二,什么SQL超时?您是否发现某些SQL比其他SQL慢?如果是这样,那么你有两个选择。第一种方法是使用索引等标准做法来调整数据库。第二种方法是增加database.yml中的“超时”选项。默认超时为5000,即5秒。你试过把它设置为10000吗?我想我问的是你如何确定这是一个“连接”超时与“等待”超时?

相关问题