50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

نوسان در مصرف cpu در ویندوز سرور 2016

با سلام

من در محل کارم یک ماشین مجازی دارم که روی آن ویندوز سرور 2016 نصب شده است و بر روی آن sql server 2017 نصب شده که نرم افزار حسابداری شرکت از آن به عنوان جایگاه ذخیره سازی دیتابیسش استفاده میکند

الان حدود یک سال است که موقعی که تسک منیجر را میزنم sql در حال اشغال فضای cpu  به صورت نامنظم میباشد به اینصورت که از 2 درصد شروع و پرش به 20 و بعد 50 و بعد 75 و بعد 99 میکند و دوباره به 2 درصد بر میگردد که این روند هر چند ثانیه یکبار رخ میدهد و تمام sql در این قضیه دخیل میباشد.....سیستم مالی شرکت رایورز میباشد   و تا الان کسی نتوانسته دلیل قطعی برای این موضوع ارایه بدهد ...این سرور حدود 5 سال است با همین منابع ایجاد شده و درحال کار میباشد که الان 2 سال است این مشکل را دارد

لطفا راهنماییم کنید

پرسیده شده در 1404/03/01 توسط

3 پاسخ

0

سلام دوست عزیز

مشکلی که گفتی یعنی نوسان شدید مصرف CPU توسط سرویس SQL Server روی ویندوز سرور 2016 معمولاً به یکی از دلایل زیر برمی گرده: یا کوئری های سنگین و غیربهینه در حال اجرا هستن، یا منابع سرور در مقایسه با حجم پردازش ها ناکافیه، یا اینکه تنظیمات اشتباه در SQL Server باعث مصرف بیش از حد CPU می شن. گاهی اوقات هم بدلیل نبودن ایندکس مناسب یا به هم ریختگی ایندکس ها روی جداول پرکاربر، فشار زیادی به CPU وارد می شه.

بهترین راه شروع بررسی اینه که با استفاده از ابزار SQL Server Profiler یا Extended Events ببینی در لحظه هایی که مصرف CPU زیاد می شه، چه کوئری هایی در حال اجرا هستن. اگر این ابزارها برات در دسترس نیستن، می تونی از DMVهای SQL استفاده کنی تا سنگین ترین کوئری ها از نظر مصرف CPU و زمان اجرا رو ببینی. معمولاً یکی دو تا کوئری هستن که مقصر اصلی هستن.

مسئله بعدی تنظیمات خود SQL Server هست. اگر مقدار max degree of parallelism یا cost threshold for parallelism به درستی تنظیم نشده باشه، ممکنه حتی کوئری های ساده هم با چندین رشته پردازشی اجرا بشن و فشار زیادی روی CPU بیارن. معمولاً مقدار مناسب برای maxdop در سرورهای معمولی بین ۴ تا ۸ هست و cost threshold رو هم بهتره روی ۳۰ یا بالاتر بذاری.

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

برای شروع سریع، پیشنهاد می کنم از روی همون سرور با یوزر ادمین وارد بشی، یه بار با دستور gpresult /h report.html وضعیت GPOهای اعمال شده رو بررسی کنی، و با task manager و ابزارهایی مثل Process Explorer ببینی آیا پروسس sqlservr.exe چه میزان از منابع رو دقیقا در چه بازه هایی مصرف می کنه.

پاسخ در 1404/04/07 توسط
1

سلام 

ممنون از راهنماییتون 

مشکل این جا بود.......

بررسی تعامل سیستم رایورز با دیتابیس (مثلاً آیا گزارش گیری های real-time یا فرم های خاصی باعث بار ناگهانی می شوند؟).

به پشتیبانشون ارجاع دادم

باز هم متشکر

پاسخ در 1404/03/05 توسط
2

مهندس سلام با توجه به موردی که گفتید موارد زیر رو پیشنهاد میکنم انجام بدید

اجرای کوئری های بررسی مصرف CPU و ایندکس ها.

مانیتور لاگ ها و Jobهای SQL Agent.

بروزرسانی SQL Server در صورت نیاز.

بررسی تعامل سیستم رایورز با دیتابیس (مثلاً آیا گزارش گیری های real-time یا فرم های خاصی باعث بار ناگهانی می شوند؟).

در صورت امکان، Capture ترافیک با Profiler یا Extended Events در بازه ای که مصرف CPU بالا می رود و آنالیز Queryها.

این موارد به احتمال زیاد می تونند مشکل رو برطرف کنند در صورت اینکه موارد بالا جواب نداد تجربیات خودتون رو در اجرای این موارد در سایت قرار بدید تا دوباره دوستان بررسی کنند.

پاسخ در 1404/03/01 توسط

پاسخ شما