Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Есть сервер, девственный билд 1617, без единого сервис пака.
Есть десяток клиентов, которые работают в дургих местах без проблем.
Вермя от времени, раз в 1-2 суток вдруг все клиенты замерзают, видно, что ждут ответа от сервера.
При этом в логах системы и сервера никаких сообщений нет.

На сервере два физических диска, один побит на разделы, в них расположены темпдб, лог базы, на втором диске - файлы данных базы. Приращение стоит по 100 мб.

Куда копать?
30 сен 13, 12:14    [14900595]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
видно, что ждут ответа от сервера.

Откуда и кому это видно ?
30 сен 13, 12:15    [14900610]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
видно, что ждут ответа от сервера.

Откуда и кому это видно ?


снимается приложение, генерируется дамп, в нем видно в недрах оледб на какой команде висело.

автор
ntdll.dll!_ZwWaitForSingleObject@12 ()
ntdll.dll!_ZwWaitForSingleObject@12 ()
ws2_32.dll!_recv@16 ()
dbnetlib.dll!_ConnectionRead ()
30 сен 13, 12:54    [14900880]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
снимается приложение, генерируется дамп, в нем видно в недрах оледб на какой команде висело.

И причем тут сервер ?
30 сен 13, 12:58    [14900916]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
andy st
Member

Откуда:
Сообщений: 798
Winnipuh
Куда копать?

Профайлер с фильтром на шипко большой duration + счётчики на cpu, носители и т.п. для анализа этого "раза" религия не позволяет поставить?
30 сен 13, 13:46    [14901346]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
снимается приложение, генерируется дамп, в нем видно в недрах оледб на какой команде висело.

И причем тут сервер ?


так думается, что сервер, поскольку одномоментно десяток приложений торчит.
30 сен 13, 14:08    [14901579]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
Glory
пропущено...

И причем тут сервер ?


так думается, что сервер, поскольку одномоментно десяток приложений торчит.

Неудовлетворительная производительность запроса не является ошибкой сервера.
Надо сначала мониторить, а потом думать
30 сен 13, 14:12    [14901623]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33947
Блог
Winnipuh
так думается, что сервер, поскольку одномоментно десяток приложений торчит.


может сервер, а может и сеть
30 сен 13, 14:13    [14901631]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
пропущено...


так думается, что сервер, поскольку одномоментно десяток приложений торчит.

Неудовлетворительная производительность запроса не является ошибкой сервера.
Надо сначала мониторить, а потом думать


кстати, сервер выедает всю память, может ему дать чуть меньше, чем размер физической памяти?
Т.е. такс менеджер пишет:

физ память: 24567
кэшировано: 495
доступно: 574
свободно: 81
30 сен 13, 14:51    [14901961]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
а когда это таскманагер стал показывать правильно память для sql-сервера?
30 сен 13, 14:54    [14901984]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
кстати, сервер выедает всю память, может ему дать чуть меньше, чем размер физической памяти?

Т.е. вы думаете, что проблема в том, что у сервера слишком много памяти ?
И если отобрать у него память, то производительность сразу возрастет ?
30 сен 13, 14:54    [14901986]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
кстати, сервер выедает всю память, может ему дать чуть меньше, чем размер физической памяти?

Т.е. вы думаете, что проблема в том, что у сервера слишком много памяти ?
И если отобрать у него память, то производительность сразу возрастет ?


не думаю, но пытаюсь понять, что менять:

1. сервер билд 1617
2. файлы логов базы, темпдб, файл выгрузки системы расположены на одном физическом диске
3. скл сервер съеддает всю память, может системе нужно что-то оставить, хотя бы 1г
30 сен 13, 15:27    [14902197]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Winnipuh
Glory
пропущено...

Т.е. вы думаете, что проблема в том, что у сервера слишком много памяти ?
И если отобрать у него память, то производительность сразу возрастет ?


не думаю, но пытаюсь понять, что менять:

1. сервер билд 1617
2. файлы логов базы, темпдб, файл выгрузки системы расположены на одном физическом диске
3. скл сервер съеддает всю память, может системе нужно что-то оставить, хотя бы 1г

1. что мешает для начала накатить все доступные SP и CU ?
2. а он что вообще один ? Почему СУБД не размазано по д\п ?
3. что вы зациклились на памяти ? Вам что анализ счётчиков производительности и мониторинг нагрузки это показал ?
30 сен 13, 15:33    [14902232]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
не думаю, но пытаюсь понять, что менять:

Вы пытаетесь тыкать пальцем в небо.
А тыкать нужно в цифры мониторинга
Хотя бы для начала во встроенные репорты производительности и системные представления
30 сен 13, 15:39    [14902261]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
stavgreengo
Winnipuh
пропущено...


не думаю, но пытаюсь понять, что менять:

1. сервер билд 1617
2. файлы логов базы, темпдб, файл выгрузки системы расположены на одном физическом диске
3. скл сервер съеддает всю память, может системе нужно что-то оставить, хотя бы 1г

1. что мешает для начала накатить все доступные SP и CU ?
2. а он что вообще один ? Почему СУБД не размазано по д\п ?
3. что вы зациклились на памяти ? Вам что анализ счётчиков производительности и мониторинг нагрузки это показал ?



1. ничто не мешает, но сервер свободен для работ только в определенные дни и в определенное время, и для рестарта тоже
2. два хдд + два в зеркале
и файл данных базы на одном диске, а файл лога базы, темпдб, файл подкачки системы - на втором физическом диске.

3. пока не набрал достаточно данных
30 сен 13, 15:48    [14902311]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Всегда смотрите на индексы, возможно каких то не хватает.
30 сен 13, 17:54    [14903009]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Crimean
Member

Откуда:
Сообщений: 13148
ну так а процессы на сиквеле чего делают? мучают проц / диск или стоят на сетке? или вообще курят?
1 окт 13, 20:24    [14909184]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
uaggster
Member

Откуда:
Сообщений: 860
Winnipuh
Glory
пропущено...

И причем тут сервер ?


так думается, что сервер, поскольку одномоментно десяток приложений торчит.

1. Сначала исключить неисправность контроллера / дисков.
2. Посмотреть, не совпадает ли зависание с активностью других задач. Антивирус кошмарского не стоит случаем?
3. Запустить профайлер по шаблону lock и смотреть, не ловит ли кто эксклюзивно таблицы, и вообще, какие блокировки накладываются.
4. Аналогично по шаблону duration. Можно совместить.
Использование профайлера работать другим пользователям не мешает.
5. Смотреть счётчики дисков, процессора.

То, что сиквел съедает всю память это не страшно. Он всегда всю съедает, сколько не дай.
1 окт 13, 22:05    [14909448]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Crimean
ну так а процессы на сиквеле чего делают? мучают проц / диск или стоят на сетке? или вообще курят?


не успеваю изучить, юзеры быстро снимают и перезапускают приложения. критично для них это.
Но скл сервер жив всё время, с этим все ок.
Блокировки... Сообщений в логах нету видимо из-за того, что он не успевает выбрать жертву, таймаут не вышел, иадмины опережают его.

Вот что наловил:

процесс 153 блокирует 226, а далее 226 блокирует всех остальных, кто пытается работать с теми же таблицами
При этом 153 уже находится в транзакции, выяснил, что она открывается явно на клиенте
и далее должна следовать цепочка команд.
Видимо часть команд выплнилась, но где-то попалась длинная или, что скорее всего - случилась взаимная блокировка
Но вот этого я и не вижу, кто держал 153

автор
<blocked-process-report>
<blocked-process>
<process id="process516b048" taskpriority="0" logused="0" waitresource="KEY: 5:72057595398848512 (7467f96d8491)"
waittime="23488" ownerId="1429078798" transactionname="SELECT" lasttranstarted="2013-10-01T17:55:28.960"
XDES="0x5a0995b30" lockMode="S" schedulerid="10" kpid="6108" status="suspended"
spid="226" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="2013-10-01T17:55:28.960"
lastbatchcompleted="2013-10-01T17:55:25.950" clientapp="app"
hostname="GR1-11" hostpid="4248" loginname="GR1\vova" isolationlevel="read committed (2)" xactid="1429078798"
currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame line="1" stmtstart="44" sqlhandle="0x02000000f0a68524abf861c83b6e3b11672344b677bcc5ec"/>
<frame line="1" sqlhandle="0x000000000000000000000000000000000000000000000000"/>
</executionStack>
<inputbuf>
(@P1 uniqueidentifier)SELECT * FROM dbo.v_ac_2 WHERE id = @P1 AND type = 16 </inputbuf>
</process>
</blocked-process>
<blocking-process>
<process status="sleeping" spid="153" sbid="0" ecid="0" priority="0" trancount="1"
lastbatchstarted="2013-10-01T17:55:29.463" lastbatchcompleted="2013-10-01T17:55:29.463"
lastattention="2013-10-01T17:55:29.460" clientapp="app"
hostname="GR1-1" hostpid="4268" loginname="GR1\petya" isolationlevel="read committed (2)"
xactid="1429078484" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack/>
<inputbuf>
(@P1 uniqueidentifier)SELECT * FROM dbo.v_ac_2 WHERE id = @P1 AND type = 16 </inputbuf>
</process>
</blocking-process>
</blocked-process-report>
2 окт 13, 14:39    [14912510]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
Но вот этого я и не вижу, кто держал 153

Да никто его не держит
<blocking-process>
<process status="sleeping"
2 окт 13, 14:57    [14912648]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
Но вот этого я и не вижу, кто держал 153

Да никто его не держит
<blocking-process>
<process status="sleeping"


почему же он тогда блокирует?
вроде селект выполняет....
этот селлект выполняется быстро, проверил руками
2 окт 13, 17:01    [14913803]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
почему же он тогда блокирует?
вроде селект выполняет....
этот селлект выполняется быстро, проверил руками

Потому что пользователь сидит и ковыряет в носу перед открытм гридом, в котором отображается только часть выбранных данных ?
2 окт 13, 17:04    [14913827]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
почему же он тогда блокирует?
вроде селект выполняет....
этот селлект выполняется быстро, проверил руками

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


вроде нет грида.... проверил так же - нету и messagebox с вопросом типа "сохранить?", хотя лучше бы он был
Буду рыть дальше, хреново то, что проявляется это изредка...

и вот этот блокирующий процесс (который sleeping)
выдает такие команды в профайлере в нормальном режиме, без зависаний

set implicit_transactions on 
exec dbo.proc1
exec dbo.proc2
exec dbo.proc3
IF @@TRANCOUNT > 0 COMMIT TRAN
set implicit_transactions off
SELECT * FROM dbo.v_ac_2 WHERE id = @P1 AND type = 16


т.е. клиент открывает транзакцию явно, что-то делает и затем закрывает и перечитывает данные,
так странно, что профайлер показывает у блокирующего процесса этот последний селект.. а он то уже за транзакцией
2 окт 13, 18:12    [14914201]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Winnipuh
IF @@TRANCOUNT > 0 COMMIT TRAN

т.е. клиент открывает транзакцию явно, что-то делает и затем закрывает

Вы о той конструкции, что я оставил, пишете — "закрывает транзакцию"?
Но закрытие происходит только в случае @@TRANCOUNT = 1.
А в случае, если @@TRANCOUNT > 1, транзакция остаётся открытой, а счётчик @@TRANCOUNT уменьшается на единицу.
Транзакцию закрыть можно так:
WHILE @@TRANCOUNT > 0 COMMIT TRAN
2 окт 13, 18:19    [14914235]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2008R2: иногда клиенты торчат  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
Winnipuh
IF @@TRANCOUNT > 0 COMMIT TRAN

т.е. клиент открывает транзакцию явно, что-то делает и затем закрывает

Вы о той конструкции, что я оставил, пишете — "закрывает транзакцию"?
Но закрытие происходит только в случае @@TRANCOUNT = 1.
А в случае, если @@TRANCOUNT > 1, транзакция остаётся открытой, а счётчик @@TRANCOUNT уменьшается на единицу.
Транзакцию закрыть можно так:
WHILE @@TRANCOUNT > 0 COMMIT TRAN



клиент (с++) работает через оледб провайдер, и явно не выдвет команду

IF @@TRANCOUNT > 0 COMMIT TRAN


Он открывает и делает коммит или роллбэк транзакции методами оледб.
Подозреваю, что это оледб генерирует имплисит команды и эту тоже
2 окт 13, 19:02    [14914527]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить