18.12.2015, 12:58 | #1 |
Участник
|
Пакетные задания, SPID/Session
Доброго дня!
Существует проблема в нехватке количества 32 767 одновременных соединений к SQL серверу. Обрабатываемая задача: загрузка данных из файлов csv. Текущая конфигурация DAX: • Ax2012 R3 (Системная версия: 6.3.1000.1928 Версия приложения: 6.3.1000.473) • AOS x6 • SQL 2014 • Пользователей нет Текущие настройки: • Макс кол-во сессий: по 500 на AOS, итого 500*6 = 3000 сессий в пакетных заданиях (в настройках Администрирования Ах пишется как кол-во потоков). • Макс кол-во подключений на SQL = не ограничено (макс системный порог 32 767) Наблюдения: При работе некоторых классов загрузки, кол-во соединений около 2,5 на 1 сессию. Иногда кол-во соединений достигает 80-100 на 1 поток, что приводит к превышению макс.кол-ва подключений и вылету всех AOS, с выдачей соотв. сообщений в журналы. В любой момент времени работы пакетов, запросом sp_who на sql сервере видно что 99% SPID в состоянии sleeping_AwaitingCommand. По завершении пакетного задания (точнее каждого Batch), подключения к sql исчезают, однако активные сессии, созданные пакетным заданием, по прежнему остаются на некоторое время, затем сами по себе исчезают. Блокировок на sql сервере не наблюдается в любой момент. Временным решением является сокращение кол-ва доступных потоков на АОСах до 100, в этом случае кол-во соединений остается в рамках квоты sql. Однако скорость загрузок резко ухудшается. Алгоритм загрузки -Обращение к таблице, для выявления существования ранее загруженной строки -Заполнение курсора (в т.ч. обращение к справочникам для получения RecId) -Update/Insert или пропуск строки, если существующая строка идентична. Загрузка возможна одновременно в несколько таблиц, например SalesAgreementHeader, LogisticsLocation, LogisticsPostalAddress. Влияние кол-ва конечных таблиц, куда идет запись, а также кол-во связанных справочников (куда идут запросы на получение RecId курсоров), не обязательно приводит к увеличению кол-ва подключений к SQL, относительно простейшей загрузки в 1 таблицу без Relation. Однако значение количества SPID/Session всегда примерно одинаково для каждого класса. Вопросы: 1) По какому принципу формируется минимальное кол-во подключений к sql серверу, и есть ли четкая связь с элементами кода Ах? 2) Когда подключение прекращается, и в каких случаях переводится в sleeping? 3) Предусмотрены ли способы управления/контроля/ограничения максимальным кол-ом соединений (не сессий) со стороны Ах, чтобы исключить данную проблему? 4) Каков механизм снятия сессий, после завершения пакетного задания? Последний раз редактировалось Pokersky09; 18.12.2015 в 13:02. |
|
Теги |
batch, session, spid, пакетное задание |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|