AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.12.2015, 12:58   #1  
Pokersky09 is offline
Pokersky09
Участник
 
43 / 60 (3) ++++
Регистрация: 15.11.2012
Адрес: Turkey
? Пакетные задания, 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, пакетное задание

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему могут слетать пакетные задания? AXcons DAX: Администрирование 5 16.06.2015 13:09
emeadaxsupport: Capturing an AX User’s SQL SPID over multiple AOS servers in AX 2009 Blog bot DAX Blogs 0 16.05.2013 19:11
dynamicsaxbi: How To: Addressing SSRS Session Timeouts Blog bot DAX Blogs 0 15.02.2013 00:13
Настройка Axapta 3.0 (Array fetch ahead, Buffer size, событие ожидания в oracle 10G SQL*Net message to/from client ). Долго выполняются пакетные задания. NemoFF DAX: Администрирование 4 13.01.2011 11:01
daxis: Dynamics Ax 4.0 Session Types Blog bot DAX Blogs 0 01.04.2009 18:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:24.