Ошибка TinyTds: Превышено время ожидания подключения адаптивного сервера

Мы запускаем приложение ruby ​​on rails на рельсах 3.2.12 (ruby 1.9.3) с текущим камнем tinyTDS 0.6.2.

Мы используем MS SQL 2012 или 2014 и, как правило, сталкиваемся со следующим сообщением об ошибке:

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

База данных AUTOCLOSE выключена. Таймауты сокетов TCP являются системой Windows по умолчанию.

Сервер приложений находится на компьютере № 1 (сервер Windows), сервер SQL находится на компьютере № 2 (сервер Windows).

Когда я проверяю соединения (netstat), у меня примерно 250 соединений, открытых примерно для 20-30 пользователей. Я запускаю execute.exe, чтобы увидеть время простоя на сервере SQL для дисков с данными и журналами.

У database.yml есть связь pool:32 а также reconnect:true,

Мне кажется, что tinyTDS потерял соединение, и любое исключение не позволяет восстановить соединение.

Вопрос в том, как я могу отладить проблему, чтобы выяснить, в чем проблема?

ОБНОВИТЬ

Моя ошибка, оригинальное сообщение об ошибке принадлежит tinytDS 0.5.x. Поскольку я обновился до последней версии, я получаю следующую ошибку в дополнение или вместо этого:

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

1 ответ

Решение

Во-первых, этот размер пула кажется чрезмерным. Вы используете тонну нитей? Если нет, то для каждого запроса / ответа приложения будет использоваться только одно соединение. Просто кажется, что это значение слишком высоко.

Во-вторых, какой тайм-аут SQL истек? Вы обнаружили, что некоторые SQL медленнее других? Если так, то у вас есть два варианта. Первым было бы настроить БД с использованием стандартных методов, таких как индексы и т. Д. Вторым было бы увеличить параметр "timeout" в вашем database.yml. Время ожидания по умолчанию составляет 5000, что составляет 5 секунд. Вы пытались установить его на 10000? Я предполагаю, что я спрашиваю, как вы уверены, что это тайм-аут "соединения" против таймаута "ожидания"?

Другие вопросы по тегам