FreeTDS unixODBC одновременные подключения

Я использую Golang с FreeTDS, используя драйвер ODBC от brainman (http://code.google.com/p/odbc)

Все отлично работает, пока не тестирую коробку.

Затем я получаю следующую ошибку:

{01000} [unixODBC] [FreeTDS] [SQL Server] Невозможно открыть сокет SQLDriverConnect: {08001} [unixODBC] [FreeTDS] [SQL Server] Невозможно подключиться к источнику данных

Кажется, что когда я пытаюсь запустить несколько одновременных запросов к драйверам FreeTDS / unixODBC, это не удается. Это что-то работоспособное, или unixODBC и FreeTDS нельзя использовать в производственных средах?


person Allison A    schedule 04.11.2013    source источник
comment
Вы что-нибудь видите в журналах SQL-сервера? Из freetds.schemamania.org/faq.html#Are.there .any.known.issues Иногда ошибки могут сбивать с толку. Когда приложение использует библиотеку неправильно или возникают проблемы с файлом данных, загружаемым с помощью BCP, сообщение, возвращаемое FreeTDS, иногда может вводить в заблуждение. В последнем случае часто необходимо изучить файл журнала, чтобы понять, что пошло не так.   -  person Intermernet    schedule 05.11.2013
comment
Для меня это похоже на то, что драйвер FreeTDS не смог создать сокет TCP / IP. Предположим, что пакет odbc удерживает сокеты TCP, содержащиеся в создаваемых им объектах подключения, до тех пор, пока они не будут собраны мусором. Не могли бы вы это проверить? 1) Увеличить ограничение на количество открытых файлов для пользователя, чья учетная запись используется для запуска стресс-теста; 2) Используйте netstat или ss, чтобы проверить, сколько ожидающих TCP-соединений у вашего приложения. И, наконец, подумайте о том, чтобы добавить его в список рассылки Go и показать исходный код.   -  person kostix    schedule 05.11.2013


Ответы (1)


Это похоже на проблему, с которой я столкнулся. FreeTDS / ODBC на CentOS7 подключается к базе данных SQLServer2005. В итоге я создал 6 отдельных DNS-записей FreeTDS / ODBC, чтобы иметь 6 дискретных подключений к базе данных, доступных для использования для решения этой проблемы (все они были просто пронумерованными дубликатами друг друга - $ db, $ db2, $ db3 и т. Д.). Это не лучшее решение, но оно работает (я переносил действительно старую систему, поэтому мои возможности были ограничены). Мне было бы очень интересно, есть ли решение получше моего.

person dmbean    schedule 01.05.2019