ايران ويج

نسخه‌ی کامل: مشکل با CPU
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
سرعت یه وبسایت با حدود 15 هزار بازدید در روز خیلی پایینه
وقتی چک کردم دیدم مشکل mysql هست
کد های برنامه ، query ها و حتی scheme دیتابیس چک شدن و روی بهینه ترین حالت ممکن قرار گرفتند، cache Query هم انجام دادم
اما وقتی توی لیست پروسس های لینوکس (top) نگاه می کنم می بینم مصرف ram خیلی کمه در حد 1%الی 3% اما مصرف cpu 100% چسبونده!


تویlog query های mysql هم که دقت میکنم در ثانیه 7-8 تا هستند که هیچ کدوم slow نیستند

نوع جدول ها innoDB هست
تعداد رکورد های دیتابیس هم حدودا 200 هزار تاست
مشخصات سیستم سرور (VPS) هم اینه:
لینوکس centOS
4 گیگ رم، cpu در 4 هسته ای هر کدوم 0.6 Ghz هستند که جمعا میشه 2.4 Ghz

به نظر شما مشکل از چی می تونه باشه؟
جایی از کار مشکل داره یا اینکه باید سیستم سرور رو ارتقا بدیم؟
هیچکس ایده خاصی نداره در این مورد؟
نرم افزار رو روی یه سیستم قوی تر Run کن ببین نتیجه چی می شه! اگه امکانش برات سخته، می تونی Local کار کنی و یه شبکه درست کنی و روی یه کامپیوتر دیگه یه نرم افزار بنویسی که از نرم افزار روی سرور کار بکشه. اگه همه این کارها رو کردی و باز هم جواب نداد، به احتمال زیاد Query ها Optimize نیستن!!
مرسی از پاسخ
نرم افزار چک شد
توی سیستم های قوی تر خوب جواب میده اما با زیاد شدن تعداد کاربرا سرعت کمی کاهش پیدا میکنه

کسی مقاله فارسی در مورد optimize کردن query ها و کلا database داره؟
کل گوگل رو گشتم... بنظر می رسه ایرانیا تو کار دیتابیس خیلی ضعیفن
:-؟؟
هر برنامه ای به صورت خاصی Optimize یا بهینه می شه. این جوری نیست که بشه براش یه قانون کلی در نظر گرفت. ولی در کل باید برای کارهایی که زیاد تکرار می شن و نتیجشون تغییرات زیادی نداره از SP یا Stored Procedure استفاده کنی. برای زمان های گزارش گیری باید از View استفاده کنی. برای Query ها هم الان نمی دونم چی بهتره چون کد هاتو ندیدم ولی اگه بذاریشون شاید بتونم کمک کنم. در ضمن شاید اساساً مشکل توی طراحی DB باشه!!!
برای کارهای تکراری از cache نتایج روی فایل های موقتی استفاده کردم
تا وقتی هم یه تیبل آپدیت نشه select مجدد نمیشه و مستقیما از روی cache خونده میشه
query ها هم بصورت زیرهستن:
(99% کوئری های sample هستن)
کد:
select username,avatar,ip from users where id=5
نوع فیلد ها کم مصرف ترین نوع ممکن در نظر گرفته شدن
مثلا:

کد:
id: mediumInt(7)
username: varchar(32)
avatar: varchar(255)
ip: varchar(16)

نوع مقدار های عددی هم روی unsigned هست و key همه تیبل ها فیلد id هست
راستی نوع تیبل ها MyISAM هست

کل برنامه هم جوریه که درصد نوع query ها در یک دقیقه اینجوریه:
کد:
Select: 50%
insert: 30%
Update : 20%

نمیدونم آیا query های insert و update هم قابلیت بهینه سازی هایی مثل cache کردن رو دارند یا نه...؟

در ثانیه هم بطور متوسط بین 60 تا 200 تا کاربر درحال کار با سایت هستند و حدود 120- 150 تا درخواست از دیتابیس وجود داره
دوباره تاکید می کنم که مصرف رم خیلی خیلی پایینه!
به نظرتون چه تغییراتی دراین تنظیمات لازمه انجام داده بشه
اصلا آیا جایی از کار می لنگه؟
و آیا نیاز به به روز رسانی سخت افزاری داریم؟