View Full Version : مشکل مصرف بیش از حد CPU در SQL Server 2005 Express
Bahram0110
پنج شنبه 09 شهریور 1391, 17:07 عصر
بنام خدا
با سلام
از دوستان و اساتید محترم در مورد مشکل زیر راهنمایی می خوام.
یک سرور هست با مشخصات زیر :
windows server 2003 32bit
Ram : 8G
CPU : 6Ghz total
این سرور چند سایت را میزبانی می کنه که پهنای باند مصرفی کل سرور در ماه کمتر از 10 گیگ هست و اکثر سایت ها شرکتی هستند (بازدید کم)
نسخه SQL Server نصب شده 2005 express هست و حدود 100 دیتابیس روی میزبانی می کنه. البته همانطور که عرض شد اکثر دیتابیس ها فعالیت نزدیک به 0 دارند مگر چند تا از اونها
عکس رم و CPU سرور قبل از ایجاد مشکل:
http://barnamenevis.org/attachment.php?attachmentid=92064&stc=1&d=1346330885
به تازگی (از دیروز) مشکلی ایجاد شده و مصرف CPU برای پروسه ی sqlserver به حدود 60% می رسه و باعث از کار افتادن دیتابیس ها می شه.
به طوری که مجبور می شم sql server را restart کنم. پس از restart همه چیز به حالت عادی بر می گرده و پس از چند دقیقه (5 دقیقه تا 30 دقیقه) مجدد مصرف سی پی یو بالا می ره.
بعد از ایجاد مشکل:
http://barnamenevis.org/attachment.php?attachmentid=92065&stc=1&d=1346331726
http://barnamenevis.org/attachment.php?attachmentid=92066&stc=1&d=1346331797
همانطور که می بینید مشکل از Ram نیست (بیش از 7 گیگ رم خالی است)
متاسفانه نتونستم دلیلش رو متوجه بشم.
آیا شما در این مورد پیشنهاد یا تجربه ای دارید؟
با تشکر
alitavakoli
پنج شنبه 09 شهریور 1391, 17:55 عصر
دوست عزیز مشکل از sql server روی سیستم نمیتونه باشه.
ایا این سایت ها این چند رو تغییری داخل دیتا بیسشون ایجا کردن؟
این کار رو انجام بدین:
وارد SQL Management studio شین و کویری جدید ایجا کنید:
دستور زیر رو وارد کنید:
SELECT *
FROM sys.dm_exec_requests a
OUTER APPLY sys.dm_exec_sql_text(a.sql_handle) b
WHERE session_id > 50
and session_id <> @@spid
این کوئری لیست یوزر ها به همراه progress شون رو نشون میده وضعیت یوزر ها رو چک کنید
نتیجه رو اعلام کنید
Bahram0110
پنج شنبه 09 شهریور 1391, 18:13 عصر
دوست عزیز مشکل از sql server روی سیستم نمیتونه باشه.
ایا این سایت ها این چند رو تغییری داخل دیتا بیسشون ایجا کردن؟
این کار رو انجام بدین:
وارد SQL Management studio شین و کویری جدید ایجا کنید:
دستور زیر رو وارد کنید:
SELECT *
FROM sys.dm_exec_requests a
OUTER APPLY sys.dm_exec_sql_text(a.sql_handle) b
WHERE session_id > 50
and session_id <> @@spid
این کوئری لیست یوزر ها به همراه progress شون رو نشون میده وضعیت یوزر ها رو چک کنید
نتیجه رو اعلام کنید
سلام
اطلاعی از تغییر ندارم چون مدیریت هر سایت مستقل هست.
کوری شما خروجی نداره (0 row(s) affected)
ولی برای مثال کوری زیر را اجرا می کنم برای لیست آخرین کوری های اجرا شده :
USE master;
SELECT st.text, r.session_id, r.status, r.command, r.cpu_time, r.total_elapsed_time
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS stو نتیجه اکثر مواقع 1 row (همین کوری بالا) است. یعنی فکر نمی کنم یوزر خاصی سرور را درگیر کند
alitavakoli
پنج شنبه 09 شهریور 1391, 18:26 عصر
این مورد هم امتحان (http://www.mssqltips.com/sqlservertip/2454/how-to-find-out-how-much-cpu-a-sql-server-process-is-really-using/)کنید
Bahram0110
پنج شنبه 09 شهریور 1391, 19:20 عصر
ممنون از راهنمایی شما
متاسفانه نسخه ای که روی سرور نصب شده Express هست و همانطور که می دونید تو بعضی موارد محدودیت داره.
مثلاً برنامه های جانبی مثل Sql Profiler و Analyzer رو نداره.
یک راهنمایی می خواستم، به نظر شما استفاده از نسخه express پیشنهاد می شه یا ارتقا بدم؟ یک چک لیست از امکانات و مقایسه نسخه ها ندارید؟
alitavakoli
پنج شنبه 09 شهریور 1391, 20:39 عصر
فکر میکنم اسکیو ال Express فرق زیادی با sql servee نداره جز برخی موارد در محدودیت های دیتا بیس:
این لینک (http://dbaspot.com/sqlserver-faq/228167-difference-between-sql-server-2005-management-studio-express-management-studio-standard-edition.html)رو ببینید
و این (http://stackoverflow.com/questions/7473703/difference-between-sql-server-2008-express-r2-and-sql-server-2008-enterprise-r2)
سوالی داشتید اینجا (http://naras.ir)مطرح کنید در خدمتم
Bahram0110
جمعه 10 شهریور 1391, 00:46 صبح
خب دوستان
دلیل مشکل رو می نویسم تا شما هم استفاده ببرید.
من فکر می کردم مشکل از هارد سرور هست، هارد رو عوض کردم مشکل برطرف نشد.
فکر می کردم مشکل از رم سرور هست، رم رو ارتقا دادم مشکل برطرف نشد.
فکر می کردم مشکل از cpu است، سرور رو عوض کردم مشکل برطرف نشد.
فکر می کردم یکی از کاربران استفاده غیرمعمول دارند ولی اینطور نبود.
در پایان:
نسخه Express 2005 فقط 1 گیگ از رم و 1 هسته از cpu رو ساپورت می کنه. اگر به عکس زیر توجه کنید می بینید که فقط یکی از CPU ها درگیر می شه و هسته دوم بیکار می مونه
http://barnamenevis.org/attachment.php?attachmentid=92065&stc=1&d=1346331726
بنابر این مطمئن شدم مشکل از نسخه SQL Server هست.
پس مجبور به خرید نسخه Enterprise شدم و با مشکلات کوچک و بزرگ Upgrade کردم. الان هیچ مشکلی وجود نداره.
با تشکر
Bahram0110
جمعه 10 شهریور 1391, 00:53 صبح
از دوست خوبم آقای توکلی هم کمال تشکر را دارم. کمک زیادی کردید مخصوصاً با این (http://www.mssqltips.com/sqlservertip/2454/how-to-find-out-how-much-cpu-a-sql-server-process-is-really-using/) لینک
alitavakoli
جمعه 10 شهریور 1391, 07:14 صبح
از دوست خوبم آقای توکلی هم کمال تشکر را دارم. کمک زیادی کردید مخصوصاً با این (http://www.mssqltips.com/sqlservertip/2454/how-to-find-out-how-much-cpu-
a-sql-server-process-is-really-using/) لینک
خواهش میکنم لطفا به ا هم سر بزنید و سوالاتتون رو مطرح کنید مشتاقتنه منتظریم.
mahmoud7577
سه شنبه 11 مهر 1391, 09:44 صبح
سلام
منم رو سرورم sql2000 دارم که بعد از یه مدت فضای RAM زیادی رو اشغال میکنه!
ممنون میشم راهنماییم کنید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.