Agent-Performance-Monitoring

جمع آوری آمار Performance Monitor برای jobهای SQL Server Agent

یک مشکل بزرگ در مورد Jobهای زمان بندی شده این است که آنها اغلب Jobهای batch یا دسته ای هستند که هنگام اجرا مقدار قابل توجهی از منابع را مصرف می کنند. مشکل دیگر این است که این جاب ها معمولاً در ساعات غیرفعالی مانند شب ها یا آخر هفته ها اجرا می شوند، بنابراین هیچ فردی برای نظارت بر میزان کارکرد منابع جاب وجود ندارد. بدون حضور در اطراف برای نظارت بر فعالیت جاب، تعیین اینکه آیا جابها به طور موثر وعملکردی خوب اجرا می شوند یا خیر، دشوار است. همچنین، هنگامی که جاب های دسته‌ای برای اولین بار اجرا می‌شوند، اغلب با داده‌های کمتری انجام می‌شوند، بنابراین نیاز به منابع زیادی نیست، اما با گذشت زمان پایگاه داده رشد می‌کند و اغلب بار این فرآیندهای دسته‌ای افزایش می‌یابد. بنابراین چگونه می توانید میزان کارکرد منابع جاب را در حالی که آنجا نیستید نظارت کنید؟

ساده ترین و کم هزینه ترین روش استفاده از ابزارهای داخلی است که ویندوز و SQL Server ارائه می دهند. این ابزارها Performance Monitor و Trace هستند. هر دوی این ابزارها به شما این امکان را می‌دهند که مجموعه‌ای از اشیاء از پیش تعریف‌شده ایجاد کنید و سپس این دستورات را از یک خط فرمان اجرا کنید. احتمالاً اکثر افراد قبلاً با این ابزارها و نحوه استفاده از این ابزارها از رابط کاربری گرافیکی آشنا هستند، اما برای هر دوی این ابزارها می‌توان فرآیند جمع‌آوری خودکار را انجام داد و بنابراین می‌توان داده‌ها را بی وقفه جمع‌آوری کرد. علاوه بر این، از آنجایی که این فرآیندها می توانند در صورت نیاز شروع و متوقف شوند، نیازی به جمع آوری داده ها از زمان خروج از محل کار تا زمان بازگشت نیست. بیایید نگاهی به نحوه خودکارسازی فرآیند جمع‌آوری داده‌ها برای هر دو Performance Monitor و Trace بیندازیم.

Performance Monitor

برای Performance Monitor، ابتدا باید یک Counter Log راه اندازی کنید. این را می توان با استفاده از خط فرمان یا با استفاده از رابط کاربری گرافیکی performance monitor انجام داد. برای این مثال، راه اندازی یک Counter Log از طریق رابط کاربری گرافیکی را بررسی می کنیم.

اولین کاری که باید انجام دهید این است که Performance Monitor را راه اندازی کنید. این برنامه را می‌توانید در بخش Administrator Tools در کنترل پنل ویندوز پیدا کنید یا می‌توانید با تایپ کردن “perfmon” و کلیک روی OK، آن را از طریق Run اجرا کنید. در زیر Performance Log and Alerts  گزینه Counter Logs را انتخاب کنید و برای انتخاب New Log Settings کلیک راست کنید. اولین کاری که باید انجام دهید این است که یک نام به Counter Log بدهید.

perfmon1

perfmon6

پس از ارائه یک نام، باید کانترها یا اشیایی که باید جمع آوری شوند را اضافه کنید. چندین نکته دیگر در اینترنت در مورد اینکه چه کانترهایی باید جمع آوری شود وجود دارد، بنابراین به این نکته نخواهیم پرداخت.

perfmon2

پس از انتخاب کانترها، باید نوع Log File را تنظیم کنید. این را می توان به همان شکلی که هست رها کرد یا می توانید Configure را برای تغییر گزینه ها انتخاب کنید. صفحه Configure در زیر نشان داده شده است.

perfmon3

perfmon5

در نهایت، باید Schedule را تنظیم کنید. از آنجایی که ما این کار را از خط فرمان شروع و متوقف می کنیم، می توانیم تمام تنظیمات را به صورت دستی (Manual) تنظیم کنیم. پس از اتمام کار روی OK کلیک کنید و Counter Log شما ذخیره می شود.

perfmon4

برای شروع و توقف این مجموعه جدید از کانترها به نام SQLCcounters، می توانیم دستورات زیر را از خط فرمان ویندوز، از یک batch job یا از یک job step در یک job SQL Server اجرا کنیم. برای این ما از ابزار ویندوزی Logman در خط فرمان استفاده کردیم:

برای شروع

logman Start sqlcounters 

برای متوقف کردن

logman stop sqlcounters

پس از شروع و توقف جمع آوری داده ها، فایلی مانند C:\PerfLogs\SQLCounters_000001.blg ایجاد می کند. سپس این فایل را می توان با ابزار Performance Monitor باز کرد تا داده های کانترهایی را که به تازگی جمع آوری کرده اید مشاهده کنید.

اگر دوباره دستورات را اجرا کنید، یک فایل جدید به نام C:\PerfLogs\SQLCounters_000002.blg ایجاد می شود، بنابراین فایل اول بازنویسی نمی شود.

Trace

برای Trace باید یک Trace سمت سرور راه اندازی کنید تا رویدادهای SQL Server را که می خواهید ضبط کنید جمع آوری کنید. اینکار را میتوانید توسط Profiler انجام دهید.

هنگامی که تعریف trace تنظیم شد، می توانید از دستورات زیر برای شروع، توقف و بستن و حذف tarce سمت سرور استفاده کنید.

Task

Command

Notes

To find traceid

SELECT * FROM :: fn_trace_getinfo(default)

با این کار لیستی از تمام traceهایی که روی سرور اجرا می شوند به شما ارائه می شود.

To start a trace

sp_trace_setstatus traceid, 1

TraceId مقدار ردیابی خواهد بود

To stop a trace

sp_trace_setstatus traceid, 0

TraceId مقدار ردیابی خواهد بود

To close and delete a trace

sp_trace_setstatus traceid, 0
sp_trace_setstatus traceid, 2

برای حذف باید ابتدا trace را متوقف کنید و سپس می توانید trace را حذف کنید. با این کار فایل trace نوشته شده بسته می شود.

اگر trace دارای traceID = 1 بود، می توانید دستورات زیر را صادر کنید.

برای شروع

EXEC sp_trace_setstatus 1,1

برای متوقف کردن

EXEC sp_trace_setstatus 1,0

EXEC sp_trace_setstatus 1,2

همه اش را بگذار کنار هم

فرض کنید جابی به نام LoadProductionData داریم که یک پروسیجر به نام spLoadProductionData را اجرا می کند. برای جمع‌آوری performance و trace داده‌ها برای این جاب، می‌توانیم استپ های اضافی را برای شروع این فرآیندها قبل از فرآیند و سپس متوقف کردن آنها پس از فرآیند تنظیم کنیم.

قبل از اینکه وارد استپ های جاب شویم، فرض می کنیم موارد زیر قبلا ایجاد شده اند.

  • پرسوسیجر spLoadProductionData وجود دارد
  • Peformance counter log به نام “sqlcounters” راه اندازی شده است
  • یک پروسیجر به نام “spStartTrace” که دارای تنظیمات trace سمت سرور ما است راه اندازی شده است. این پروسیجر یک پارامتر به نام filename@ را می گیرد که برای نام فایل های trace استفاده می شود. مسیر پیش فرض “C:\perflogs” است.

Job Step

Command

Command Type

Purpose

1

spStartTrace ‘LoadProductionData’

T-SQL

Trace سمت سرور را بایک نام فایل خروجی زیر آغاز میکند:

 c:\perflogs\LoadProductionData.trc

2

logman update sqlcounters -o c:\perflogs\LoadProductionData

CmdExec

این نام فایل خروجی را برای کانترهای پرفورمنس تغییر می دهد به c:\perflogs\LoadProductionData.

3

logman start sqlcounters

CmdExec

با این استپ، کار مجموعه کانتر پرفورمنس  شروع می شود.

4

EXEC spLoadProductionData

T-SQL

این استپ  جاب عادی ما برای بارگیری داده ها یا هر کاری است که جاب انجام می دهد.

5

DECLARE @traceID int

SELECT @traceID=traceID FROM :: fn_trace_getinfo(default)
where value = ‘c:\perflogs\’ + ‘LoadProductionData’

EXEC sp_trace_setstatus @traceID, 0

EXEC sp_trace_setstatus @traceID, 2

T-SQL

این استپ مشخص می کند که کدام ردیابی برای فرآیند LoadProductionData تنظیم شده است. TraceID را دریافت می کند و متوقف می شود و سپس trace را می بندد، بنابراین می توانید نتایج را ببینید.

6

logman stop sqlcounters

CmdExec

این استپ مجموعه کانتر پرفورمنس را متوقف می کند.

هنگامی که جاب اجرا شد و کامل شد، حداقل دو فایل ایجاد می شود که یکی برای کانترهای performance و دیگری برای ردیابی و Trace است. سپس این فایل‌ها را می‌توان با استفاده از Performance Monitor یا Profiler بارگیری کرد تا بتوانید نتایج جاب را ببینید.

برچسب ها: بدون برچسب

نظر بگذارید

آدرس ایمیل شما منتشر نخواهد شد. قسمتهای مورد نیاز علامت گذاری شده اند *