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

Откуда:
Сообщений: 55
Добрый день.


Вот запустил, я профайлер.


В него что-то там пишется в огромном количестве.




А где это он все сохраняет?

Хочу оставить на ночь, но боюсь что диск переполнится....
14 сен 17, 18:05    [20796759]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
можно ли сделать чтобы он сразу в файл писал без отображения на экране?

и ограничение на размер файла поставить, например.



В общем, скажите как кошерно профайлер запускать на ночь на нагруженном сервере?
14 сен 17, 18:06    [20796763]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4534
дампер, https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/create-and-run-traces-using-transact-sql-stored-procedures лучше не запускать... Гляньте на екстендед евентс :)
14 сен 17, 18:12    [20796781]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3436
дампер
Добрый день.


Вот запустил, я профайлер.


В него что-то там пишется в огромном количестве.




А где это он все сохраняет?

Хочу оставить на ночь, но боюсь что диск переполнится....


Направьте записи в таблицу в базе
14 сен 17, 18:16    [20796799]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
buser
дампер, https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/create-and-run-traces-using-transact-sql-stored-procedures лучше не запускать... Гляньте на екстендед евентс :)


Интересный вариант, надо будет попрбовать.

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

Главное чтобы не переполнился диск. И при разрыве соединения с сервером работа профайлера продолжилась.
14 сен 17, 18:29    [20796833]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Ролг Хупин
дампер
Добрый день.


Вот запустил, я профайлер.


В него что-то там пишется в огромном количестве.




А где это он все сохраняет?

Хочу оставить на ночь, но боюсь что диск переполнится....


Направьте записи в таблицу в базе



Нашел, при создании можно, спасибо :)
14 сен 17, 18:55    [20796922]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5490
дампер
В общем, скажите как кошерно профайлер запускать на ночь на нагруженном сервере?
Кошерно никак. И халяльно тоже никак.

Во-первых, он тормозит сервер. И очень сильно. Ибо пишет до нескольких тысяч записей в секунду, если писать всё подряд. Выход - писать не всё подряд. Например, я пишу только события, которые длились дольше 50 миллисекунд. Выходит около 10-20 записей в секунду. Соответственно, SP:Completed пишем, а SP:Starting не пишем. SQL:BatchCompleted пишем, а SQL:BatchStarting не пишем. Анализ такого неполного лога достаточно нетривиален. Например, есть огромный курсор. Каждая его итерация выполняется быстрее 50 миллисекунд, потому в трейс не пишется вообще. Но этих итераций миллион и именно этот курсор тормозит. Быстро его обнаружить такой трейс не позволит.

Надо выбирать между уровнем детализации трейса и создаваемыми профайлером тормозами.

Быстрее писать в файл на локальном диске сервера (меньше потери производительности). Но потом его всё равно для анализа надо заливать в базу. Я пишу сразу в базу (по сети на другой машине). Это позволяет сразу на лету анализировать.

Собственно, у меня есть список событий, которые я ловлю для анализа проблем на продакшене (шаблон в профайлере). И есть набор скриптов для анализа трейса. Часто закидываю данные в Excel и строю диаграммы.
14 сен 17, 20:10    [20797119]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
o-o
Guest
Ролг Хупин
Направьте записи в таблицу в базе

...чтобы максимально загрузить сервер и напропускать события, ибо захлебнется
15 сен 17, 10:02    [20797883]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Dmitry V. Liseev
дампер
В общем, скажите как кошерно профайлер запускать на ночь на нагруженном сервере?
Кошерно никак. И халяльно тоже никак.

Во-первых, он тормозит сервер. И очень сильно. Ибо пишет до нескольких тысяч записей в секунду, если писать всё подряд. Выход - писать не всё подряд. Например, я пишу только события, которые длились дольше 50 миллисекунд. Выходит около 10-20 записей в секунду. Соответственно, SP:Completed пишем, а SP:Starting не пишем. SQL:BatchCompleted пишем, а SQL:BatchStarting не пишем. Анализ такого неполного лога достаточно нетривиален. Например, есть огромный курсор. Каждая его итерация выполняется быстрее 50 миллисекунд, потому в трейс не пишется вообще. Но этих итераций миллион и именно этот курсор тормозит. Быстро его обнаружить такой трейс не позволит.

Надо выбирать между уровнем детализации трейса и создаваемыми профайлером тормозами.

Быстрее писать в файл на локальном диске сервера (меньше потери производительности). Но потом его всё равно для анализа надо заливать в базу. Я пишу сразу в базу (по сети на другой машине). Это позволяет сразу на лету анализировать.

Собственно, у меня есть список событий, которые я ловлю для анализа проблем на продакшене (шаблон в профайлере). И есть набор скриптов для анализа трейса. Часто закидываю данные в Excel и строю диаграммы.



Ого, круто! Большое спасибо.




Еще вопрос, скажите как отловить запуск процедуры, которая запускается в теле другой процедуры?

В профайлер отлавливае вроде только запуск первой. А она внутри себя запускает другую и это не отлавливается (по крайней мере у меня не отловилось).
15 сен 17, 10:58    [20798059]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3436
o-o
Ролг Хупин
Направьте записи в таблицу в базе

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


можно поставить на другой машине какой-нибудь SQLEXPRESS
15 сен 17, 11:25    [20798194]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
o-o
Guest
Ролг Хупин
o-o
пропущено...

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


можно поставить на другой машине какой-нибудь SQLEXPRESS

...и мониторить его вместо нужного сервера?
15 сен 17, 11:39    [20798253]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Eleanor
Member

Откуда:
Сообщений: 2615
o-o
Ролг Хупин
можно поставить на другой машине какой-нибудь SQLEXPRESS

...и мониторить его вместо нужного сервера?

Ролг Хупин скорее всего ссылается на данный пункт в документации:
If the table you save to is on the same server you’re tracing, you can create quite a large amount of server overhead and bandwidth utilization, so if you must use this option we recommend saving the data to a table on a different server.
15 сен 17, 13:29    [20798693]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
А скажите, можно ли как-то профайлер запустить по расписанию?

дата окончания есть при запуске.


А вот как запустить его автоматически в нужное время?
15 сен 17, 13:36    [20798711]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Eleanor
Member

Откуда:
Сообщений: 2615
дампер,

По расписанию можно запустить не профайлер, а трейс на стороне сервера, который пишет в файл и создает минимальную нагрузку:
Создаете в профайлере определение трейса, экспортируете его в sql скрипт (Export -> Script Trace Definition -> For Sql Server xxx) и запускаете этот скрипт по расписанию в Sql Server Agent.
Если потом нужно перелить файл в таблицу, то открываете его профайлером и выбираете Sava As -> Trace Table
15 сен 17, 14:05    [20798860]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3436
o-o
Ролг Хупин
пропущено...


можно поставить на другой машине какой-нибудь SQLEXPRESS

...и мониторить его вместо нужного сервера?


не, как написано выше и по ссылке - монитрить один сервер, а трейсы писать в базу другого.
15 сен 17, 15:54    [20799297]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
o-o
Guest
если честно, лучше бы он соседний пустой сервер трассировал...
дампер
Хочу оставить на ночь, но боюсь что диск переполнится....

он же не просто так заботится о месте на диске: у него дампы диск переполняют.
подыхает сервер от бурной Козловской деятельности
15 сен 17, 16:27    [20799430]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Eleanor
дампер,

По расписанию можно запустить не профайлер, а трейс на стороне сервера, который пишет в файл и создает минимальную нагрузку:
Создаете в профайлере определение трейса, экспортируете его в sql скрипт (Export -> Script Trace Definition -> For Sql Server xxx) и запускаете этот скрипт по расписанию в Sql Server Agent.
Если потом нужно перелить файл в таблицу, то открываете его профайлером и выбираете Sava As -> Trace Table



Супер!




Единственное что понять не могу - как сделать чтобы он в БД писал, а не в файл?



только в файл дает

exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL
if (@rc != 0) goto error
-- Client side File and Table cannot be scripted
-- Writing to a table is not supported through the SP's
15 сен 17, 19:35    [20799859]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Eleanor
Member

Откуда:
Сообщений: 2615
дампер,

Трейс на стороне сервера не умеет писать в БД.
Если вам достаточно sql-запросов к данным, можете использовать select * from sys.fn_trace_gettable ( 'путь к вашему trc файлу' , default)
15 сен 17, 19:48    [20799871]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5490
дампер
Dmitry V. Liseev
пропущено...
Кошерно никак. И халяльно тоже никак.

Во-первых, он тормозит сервер. И очень сильно. Ибо пишет до нескольких тысяч записей в секунду, если писать всё подряд. Выход - писать не всё подряд. Например, я пишу только события, которые длились дольше 50 миллисекунд. Выходит около 10-20 записей в секунду. Соответственно, SP:Completed пишем, а SP:Starting не пишем. SQL:BatchCompleted пишем, а SQL:BatchStarting не пишем. Анализ такого неполного лога достаточно нетривиален. Например, есть огромный курсор. Каждая его итерация выполняется быстрее 50 миллисекунд, потому в трейс не пишется вообще. Но этих итераций миллион и именно этот курсор тормозит. Быстро его обнаружить такой трейс не позволит.

Надо выбирать между уровнем детализации трейса и создаваемыми профайлером тормозами.

Быстрее писать в файл на локальном диске сервера (меньше потери производительности). Но потом его всё равно для анализа надо заливать в базу. Я пишу сразу в базу (по сети на другой машине). Это позволяет сразу на лету анализировать.

Собственно, у меня есть список событий, которые я ловлю для анализа проблем на продакшене (шаблон в профайлере). И есть набор скриптов для анализа трейса. Часто закидываю данные в Excel и строю диаграммы.



Ого, круто! Большое спасибо.




Еще вопрос, скажите как отловить запуск процедуры, которая запускается в теле другой процедуры?

В профайлер отлавливае вроде только запуск первой. А она внутри себя запускает другую и это не отлавливается (по крайней мере у меня не отловилось).
Всё отлавливается. Столбец NestLevel. Проблема в том, что именно запуск отлавливать нельзя. Не хватит производительности. Эта запись создаётся при каждом запуске каждой процедуры. А длительность выполнения в момент запуска неизвестна. Потому отлавливать нужно окончание. Но, только для тех, кто выполнялся дольше какого-то времени. Я ставлю у себя ограничение в 50 миллисекунд. Тогда поток записей становится не таким большим.
18 сен 17, 08:54    [20802388]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5490
дампер
Eleanor
дампер,

По расписанию можно запустить не профайлер, а трейс на стороне сервера, который пишет в файл и создает минимальную нагрузку:
Создаете в профайлере определение трейса, экспортируете его в sql скрипт (Export -> Script Trace Definition -> For Sql Server xxx) и запускаете этот скрипт по расписанию в Sql Server Agent.
Если потом нужно перелить файл в таблицу, то открываете его профайлером и выбираете Sava As -> Trace Table



Супер!




Единственное что понять не могу - как сделать чтобы он в БД писал, а не в файл?



только в файл дает

exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL
if (@rc != 0) goto error
-- Client side File and Table cannot be scripted
-- Writing to a table is not supported through the SP's
Вы думали, в сказку попали? Если запускать автоматически через хранимку - никак. Только в файл на диск.
18 сен 17, 08:57    [20802393]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5490
Список того, что мне нужно для мониторинга рабочей базы:
>> Errors and Warnings
Attention [16]
Background Job Error [193]
Blocked process report [137]
CPU threshold exceeded [214]
ErrorLog [22]
EventLog [21]
Exception [33]
Exchange Spill Event [127]
Execution Warnings [67]
Hash Warning [55]
Missing Column Statistics [79]
Missing Join Predicate [80]
Sort Warnings [69]

>> Locks
Deadlock graph [148]
Lock:Acquired [24]
Lock:Cancel [26]
Lock:Deadlock [25]
Lock:Deadlock Chain [59]
Lock:Timeout [27]
Lock:Timeout (timeout > 0) [189]

>> Stored Procedures
RPC:Completed [10]
SP:Completed [43]
SP:StmtCompleted [45]

>>TSQL
SQL:BatchCompleted [12]
SQL:StmtCompleted [41]
В фильтрах выставить Duration >= 50.

Не забываем, что в интерфейсе профайлера Duration в миллисекундах, а в трассировке в микросекундах.

Для записи дэдлоков делается папка на сервере. Их удобнее писать в раздельные файлы и потом анализировать.
18 сен 17, 09:06    [20802411]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Dmitry V. Liseev,

Дедлоки правильнее всего EE, да и для всего остального. Профайлер строго для мониторинга короткого промежутка.
18 сен 17, 09:09    [20802420]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5490
TaPaK
Dmitry V. Liseev,

Дедлоки правильнее всего EE, да и для всего остального. Профайлер строго для мониторинга короткого промежутка.
Часто нужно понимать причину дедлоков и просто длительных локов. Для этого нужна полная трассировка всего. Вытаскиваем процедуру, которая выполнялась аномально долго, смотрим конкретные стейтменты в ней, смотрим наличие блокировок, смотрим, что в этот (и предшествующие несколько секунд) выполнялось в других SPID.

ЕЕ хорош, когда точно известно, что именно ловить. И если в самом событии EE обычно есть вся информация, то в событии Lock:Acquired информации недостаточно для понимания ситуации.
18 сен 17, 11:45    [20802915]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Dmitry V. Liseev
TaPaK
Dmitry V. Liseev,

Дедлоки правильнее всего EE, да и для всего остального. Профайлер строго для мониторинга короткого промежутка.
Часто нужно понимать причину дедлоков и просто длительных локов. Для этого нужна полная трассировка всего. Вытаскиваем процедуру, которая выполнялась аномально долго, смотрим конкретные стейтменты в ней, смотрим наличие блокировок, смотрим, что в этот (и предшествующие несколько секунд) выполнялось в других SPID.

ЕЕ хорош, когда точно известно, что именно ловить. И если в самом событии EE обычно есть вся информация, то в событии Lock:Acquired информации недостаточно для понимания ситуации.

причина дедлока в графе дедлока...
18 сен 17, 11:48    [20802927]     Ответить | Цитировать Сообщить модератору
 Re: Как кошерно запустить профайлер?  [new]
o-o
Guest
думаю, никакие дедлоки ему не нужны.
сервер ему весь диск дампами завалил,
вот он и решил "посмотреть все подряд"
18 сен 17, 12:00    [20802971]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить