Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
Уважаемые, проблемка с сабжем, подскажите где копать!?
Исходные данные:
MSSQL2005SP2, размер БД - 2гб (simple model)
Порядка 100 конкурентных пользователей - общее кол-во сессий 300-400
Железо: IBM x3650 LFF, CPU: 2x X5460 3GHz, RAM: 8GB ECC, HDD: 2x SAS IBM 72GB 15K

На таком железе БД может находится вся в кеше (поправьте меня :)), но при этом жутко лагает,
dm_os_waiting_tasks говорит что 90% ожиданий ASYNC_NETWORK_IO, остальное CXPACKET

Сеть лагает? или когда уже лагать больше нечему всё упирается в сеть?
Понимаю что вопрос уже обсуждался, но думаю это не совсем мой случай.

Клиенты лезут в БД через MS Access с нескольких терминальных серверов на которых используется NLB(Network Load Balancing), может быть дело в нём?

Как найти место лагов если dm_os_waiting_tasks говорит что это сеть?

Заранее спасибо.
22 окт 09, 14:10    [7824147]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Glory
Member

Откуда:
Сообщений: 104760
Для ASYNC_NETWORK_IO сеть может и не лагать
Просто клиенту достаточно неспешно выбирать полученный результат
Например, лениво листать(или вообще не листать) записи в гриде на основе запроса с серверным курсором
22 окт 09, 14:14    [7824192]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
Тогда статус такой сессии должен быть sleeping, т.к. активности на сервере уже не какой..
а сессии находятся в состоянии suspended, т.е. подвисли..
или я не прав и сервер не может отправить результат?
22 окт 09, 15:04    [7824611]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Glory
Member

Откуда:
Сообщений: 104760
b00ring
Тогда статус такой сессии должен быть sleeping, т.к. активности на сервере уже не какой..
а сессии находятся в состоянии suspended, т.е. подвисли..
или я не прав и сервер не может отправить результат?

Не сервер не может отправлять результаты в никуда. Потому что буфер обмена у него не резиновый.
22 окт 09, 15:11    [7824666]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
Почему в никуда? Я имею в виду клиенту.
22 окт 09, 15:26    [7824788]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
iljy
Member

Откуда:
Сообщений: 8711
b00ring,

если клиент данные не запрашивает - сервер их никуда не отправляет. И если клиент не закрывает рекордсет (или явно открытую транзакцию) - сервер держит блокировки.
22 окт 09, 15:28    [7824800]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Glory
Member

Откуда:
Сообщений: 104760
b00ring
Почему в никуда? Я имею в виду клиенту.

Вы наверное слабо представляете себе механику
У сервера есть буфер обмена, куда он складывает результаты
А клиент должен эти результаты из буфера забирать
И если клиент этого не делает, то при заполнении буфера выполнение запроса сервер вынужден будет ожидать освобождения буфера. При этом запрос будет активен.
22 окт 09, 15:30    [7824815]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
iljy

если клиент данные не запрашивает - сервер их никуда не отправляет. И если клиент не закрывает рекордсет (или явно открытую транзакцию) - сервер держит блокировки.


Это понятно что не отправляет, видимо я не так выразился.
С блокировками тоже понятно - сессии со статусом sleeping блокировки на ресурсы непосредственно не держат..
а сессии со статусом suspended являются по сути активными и имеют кучи блокировок.

Glory

Вы наверное слабо представляете себе механику
У сервера есть буфер обмена, куда он складывает результаты
А клиент должен эти результаты из буфера забирать
И если клиент этого не делает, то при заполнении буфера выполнение запроса сервер вынужден будет ожидать освобождения буфера. При этом запрос будет активен.


Вот это уже более интересно. Имеются какие-нибудь механизмы анализа использования этих буферов?
22 окт 09, 15:55    [7825012]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Glory
Member

Откуда:
Сообщений: 104760
b00ring


Glory

Вы наверное слабо представляете себе механику
У сервера есть буфер обмена, куда он складывает результаты
А клиент должен эти результаты из буфера забирать
И если клиент этого не делает, то при заполнении буфера выполнение запроса сервер вынужден будет ожидать освобождения буфера. При этом запрос будет активен.


Вот это уже более интересно. Имеются какие-нибудь механизмы анализа использования этих буферов?

Буферы эти фиксированной величины. Зачем их анализировать ? Анализировать нужно причины, по которым клиент не спешит забирать данные
22 окт 09, 15:58    [7825042]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
Glory
Анализировать нужно причины, по которым клиент не спешит забирать данные


А если я сам, сидя непосредственно на этом сервере, получаю suspended сессию и wait type ASYNC_NETWORK_IO?
Это вариант когда клиент лениво работает с результатом на основе запроса с серверным курсором?
22 окт 09, 16:45    [7825463]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
300-400 акцесных сессий да ещё с серверными курсорами - это не перебор? подумайте над переходом на adp хотя бы
22 окт 09, 16:47    [7825479]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Glory
Member

Откуда:
Сообщений: 104760
b00ring
Glory
Анализировать нужно причины, по которым клиент не спешит забирать данные


А если я сам, сидя непосредственно на этом сервере, получаю suspended сессию и wait type ASYNC_NETWORK_IO?
Это вариант когда клиент лениво работает с результатом на основе запроса с серверным курсором?

А удаленность клиентской программы от сервера как то влияет на логику ее работы результатом ?
22 окт 09, 16:49    [7825496]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
Glory

А удаленность клиентской программы от сервера как то влияет на логику ее работы результатом ?


нет, не зависит, да и пробовали с различных клиентских мест - терминальных, локальных и подключенных в соседней дырке в cisco 3560. Они все в соседних дырках в этой циске.

Konst_One

300-400 акцесных сессий да ещё с серверными курсорами - это не перебор? подумайте над переходом на adp хотя бы


ну там не всё прям на курсорах (95% запросов - обычные запросные формы и формы ввода документов), только некоторые процедуры по агрегации данных, с расчетами задним числом.

Но вы меня натолкнули на некоторую мысль.. Тормозят обычные селекты - пойду соберу статистику по наиболее частым запросам..
22 окт 09, 17:23    [7825772]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
iljy
Member

Откуда:
Сообщений: 8711
b00ring

Konst_One

300-400 акцесных сессий да ещё с серверными курсорами - это не перебор? подумайте над переходом на adp хотя бы


ну там не всё прям на курсорах (95% запросов - обычные запросные формы и формы ввода документов), только некоторые процедуры по агрегации данных, с расчетами задним числом.

Но вы меня натолкнули на некоторую мысль.. Тормозят обычные селекты - пойду соберу статистику по наиболее частым запросам..

По-моему вы несколько путаете курсор T-SQL и серверный курсор OLEDB, или ADO, или ODBC, или чего вы там используете. Форма ввода вполне может использовать серверный курсор ADORecordset, и вы получите ровно описываемый эффект.

+ оффтоп
В который раз замечаю, что похожие проблемы идут косяками Совсем недавно была тема, в которой у ТС была та же проблема с курсорами.
22 окт 09, 17:35    [7825861]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
b00ring
Member

Откуда:
Сообщений: 59
iljy

По-моему вы несколько путаете курсор T-SQL и серверный курсор OLEDB, или ADO, или ODBC, или чего вы там используете. Форма ввода вполне может использовать серверный курсор ADORecordset, и вы получите ровно описываемый эффект.


Да что Вы мне заладили - это не знаю, то путаю!? ;)
Вы сами интерфейсы доступа к данным называете серверными курсорами, сами меня путаете :)

И дело похоже как раз в них - попробовал погонять запросики которые генерит акцесс в других средах - suspended сессий пока нет... мда.. а доступа к исходникам нету..
22 окт 09, 20:38    [7826609]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
iljy
Member

Откуда:
Сообщений: 8711
b00ring
iljy

По-моему вы несколько путаете курсор T-SQL и серверный курсор OLEDB, или ADO, или ODBC, или чего вы там используете. Форма ввода вполне может использовать серверный курсор ADORecordset, и вы получите ровно описываемый эффект.

Да что Вы мне заладили - это не знаю, то путаю!? ;)
Вы сами интерфейсы доступа к данным называете серверными курсорами, сами меня путаете :)

И дело похоже как раз в них - попробовал погонять запросики которые генерит акцесс в других средах - suspended сессий пока нет... мда.. а доступа к исходникам нету..


DBPROP_SERVERCURSOR, adUseServer, adUseClient - говорят что-нибудь слова? А аксесс скорее всего использует client-side курсор либо просто считывает рекордсет целиком и закрывает.
22 окт 09, 21:10    [7826680]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
Как проанализировать что есть причина ASYNC_NETWORK_IO ?
Висит час - хочу знать причину.
28 окт 09, 16:42    [7851428]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO  [new]
Glory
Member

Откуда:
Сообщений: 104760
BusyMan
Как проанализировать что есть причина ASYNC_NETWORK_IO ?
Висит час - хочу знать причину.

Что и у кого там висит час ?
28 окт 09, 16:55    [7851561]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить