PDA

View Full Version : سوال: علت بالا رفتن CPU Usage در نرم افزار Web App هاست شده



pej_yaali
یک شنبه 08 آذر 1388, 07:48 صبح
سلام به دوستان عزیز
نیازمند کمک شما دوستان هستم
ما تعدادی Web Application که با ASP.NET طراحی و پیاده سازی شده داریم
یکی از این نرم افزار ها وقتی که اجرا میشه CPU Usage تا 70 بالا میره و میچسبونه این نرم افزار درخواستهای مردمی برای درخواست کنتور برق و غیره رو ذخیره میکنه
ظاهرا دیتابیس مشکلی نداره البته دیتابیس روی یک سرور مجزااست و Web App روی یک سرور دیگر Host شده
دوستان عزیر ممنون می شم از راهنماییتون

Mostafa_Dindar
یک شنبه 08 آذر 1388, 11:46 صبح
يك از كندترين عمليات كه در يك WebApplication رخ ميده دستيابي به ديتابيس هست . بعبارتي Opening DataBase Connection and retrieving Data كندترين كار در يك WebApplicationl هست .
پس بهترين كار براي بهبود كارايي اينه كه كمتر به ديتابيس رجوع كنيد . چطور ؟ با Caching . چندين مدل Caching هست كه پيشنهاد ميكنم از SQL Cache Dependency استفاده كنيد .(تنها وقتي بروز ميشود كه محتواي ديتابيس تغيير كند)
البته اينطور كه شما گفتي سروري كه WebAppliation رو Host ميكنه مشكل CPU Usage داره و مشكل نميتونه زياد ناشي از DataBase باشه . شما بگين كه PF Usage هم بالا ميره يا نه ! همچنين چند كاربر همزمان از اين App استفاده ميكنند ؟
گه اگه جواب منفي باشه محتملترين جواب نوشتن كدهاي ناكارامد با Order بالا مثل حلقه هاي تو در توي نا كارامد و ... هست.
ولي در هر صورت Caching كمك زيادي به كارايي سيستم ميكنه

pej_yaali
یک شنبه 08 آذر 1388, 12:36 عصر
دوست عزیز خیلی ممنون از راهنماییتون
میتونه علت از config iis باشه ؟
می دونیدمن کارمند IT اداره برق اصفهان هستم و این نرم افزار مدیریت مشترکینمون رو انجام میده.
رم سرور 4 گیگ هستش و PF Usage 3.82 هستش تعداد کاربر همزمان حدود 45-50 نفر هستش البته این کاربر ها از فواصل مختلف و از طریق Wireless 60-90m وصل می شن

Mostafa_Dindar
یک شنبه 08 آذر 1388, 13:14 عصر
من در مورد Config ISS زياد نميدونم .
با توجه به PF Usage بالا:
احتمالا در پروژتون از Session زياد استفاده كرديد .
همچنين احتمالا از DataSet ها استفاده كرديد.
يا استفاده نادرست از ViewState ها انجام دادين .

پيشنهاد ميشه Paging رو در هنگام استفاده از كنترلهاي نمايش ديتا خودتون پياده سازي كنيد .
براي اينكار ميتونيد به پستي كه در اين آدرس گذاشتم هم مراجعه كنيد .
http://barnamenevis.org/forum/showthread.php?t=192106&page=2

يك سوال ديگه فعاليت عمده اين Operator ها با سيستم چي هست ؟
بازيابي داده يا درج . يا بروز رساني ! نحوه استفاده از Caching خيلي به اين موارد بستگي داره .

اجازه بدين بزرگان سايت نظراتشون رو بگن

mehdi.mousavi
یک شنبه 08 آذر 1388, 14:56 عصر
سلام به دوستان عزیز
نیازمند کمک شما دوستان هستم ما تعدادی Web Application که با ASP.NET طراحی و پیاده سازی شده داریم یکی از این نرم افزار ها وقتی که اجرا میشه CPU Usage تا 70 بالا میره و میچسبونه این نرم افزار درخواستهای مردمی برای درخواست کنتور برق و غیره رو ذخیره میکنه ظاهرا دیتابیس مشکلی نداره البته دیتابیس روی یک سرور مجزااست و Web App روی یک سرور دیگر Host شده دوستان عزیر ممنون می شم از راهنماییتون

سلام.
این مساله دلائل زیادی میتونه داشته باشه و شما نمیتونید با ارسال پستی به این انجمن راهکار مناسب با شرایط اجرایی خودتون رو پیدا کنید. برای شروع، ابتدا مقاله "بررسی میزان حافظه در برنامه های .NET" در شماره سوم مجله برنامه نویس رو مطالعه کنید. اونجا با ابزارهایی آشنا میشید که شما رو در ردیابی مشکل مورد نظر، بسیار کمک خواهد کرد. علاوه بر این، با مفاهیم Working Set، Private Working Set و ... آشنا خواهید شد و متوجه میشید که بدنبال چه چیزی باید باشید!

البته، همه این مسائل جای خودش، اما هرگز خطر یک Insider رو دست کم نگیرید! ممکن هستش که یکی از کارمندان و کاربران App مورد نظر، (عمدا) دست به این اقدام زده باشه. در هر حال، همونطور که گفتم، این بازه اینقدر گسترده هستش که مطمئنا اینجا به پاسخ نخواهید رسید.

موفق باشید.

pej_yaali
پنج شنبه 12 آذر 1388, 06:36 صبح
دوست عزیز سلام
از مقاله ای که دادی خیلی ممنون
80 % کارهی ما تو این نرم افزار Select هستش

Mostafa_Dindar
پنج شنبه 12 آذر 1388, 11:17 صبح
سلام.
Caching كمك زيادي به كارايي هر WebApp ميتونه بكنه به شرطي كه درست از اون استفاده بشه .
توصيه ميكنم اين كار رو با مطالعه انجام بدين .
موفق باشيد

m.hamidreza
پنج شنبه 12 آذر 1388, 18:23 عصر
این نرم افزار درخواستهای مردمی برای درخواست کنتور برق و غیره رو ذخیره میکنه
ظاهرا دیتابیس مشکلی نداره البته دیتابیس

بعنوان یه کاربر باید کل سیستم رو تست کنید و اینو بفهمید که دقیقا چه Actionای باعث این مساله میشه.
به نظر من احتمال اینکه اجرای یه SP یا Query باعث این اتفاق شده باشه از همه بیشتره.
من یه Query داشتم 8ثانیه اجراش طول میکشید و در این مدت CPU به صددرصد میرسید! نوع طراحی جداول، شیوه Join کردن ها، ایندکس گذاری و کلا بهینه سازی دیتابیس رو review کنید.
موفق باشید.