PDA

View Full Version : حرفه ای: مشکل در سایت وقتی بازدید زیاد میشه



thacker
یک شنبه 06 مرداد 1392, 12:53 عصر
سلام ...
چند وقته بازدید سایتم زیاد شده و توی ساعات اوج بازدید سرعت باز شدن سایت خیلی پایین میاد و اکثر مواقع هم کلا باز نمیشه...
این مورد رو به پشتیبانی هاستم گفتم و جواب دادن که کوئری های سایتون بیشتر از 15 ثانیه باز میمونه و درخواستهای کوئری زیاد هست...

گفت با برنامه نویسی باید درستش کنید...
حالا من چطور باید بفهمم کدوم صفحه های سایتم باعث این مشکل میشن و چجوری باید برطرفش کنم ؟؟
با تشکر

thacker
یک شنبه 06 مرداد 1392, 19:49 عصر
هیچ راهی نداره ؟!

Javidhb
یک شنبه 06 مرداد 1392, 20:22 عصر
شما اول اطلاعات بدید!!!:چشمک:

اگه سرورتون اشتراکی نیست و مقدار رمتون کافیه (به نسبت برنامه تون) میتونید از cache استفاده کنید.

این لیست (http://en.wikipedia.org/wiki/List_of_PHP_accelerators) رو نیگا کنید.

و البته کدتون هم باید قبل از هر چیزی بهینه باشه و منابع سرور رو بی جهت درگیر نکنه.

thacker
دوشنبه 07 مرداد 1392, 18:08 عصر
کش کردن نمیدونم چجوریه ...
یعنی اگه سایت رو روی سرور اختصاصی بیارم بالا دیگه مشکلی وجود نداره ؟!

Javidhb
دوشنبه 07 مرداد 1392, 20:08 عصر
شما اگه سرور اشتراکی دارید برید سراع سرور مجازی.
اگه سرورتون مجازیه برید سراغ سرور اختصاصی. (یا سرور مجازیتون رو ارتقا بدید)

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

برای سایتی که بازدیدش بالاست باید حداقل 1.5 گیگ رم داشته باشید.
این 1.5 گیگ رو روی هوا گفتم چون بستگی به تعداد بازدید کنندها ,مقدار اطلاعاتی که از بانک اطلاعاتی میگرید، و .... داره.

tem988
سه شنبه 08 مرداد 1392, 02:28 صبح
سلام
بهتره اول از هر کوئری تایم بگیری و چک کنی کدوم کوئری زمان اجراش از همه بیشتره و همون تیبل رو بهینه کنی. برای تایم هم از روش زیر استفاده کن
کد زیر رو اول صفحه بزار

$time_start = microtime(true);
بعد کد زیر رو بعد از هر کوئری بزار

echo "table name : ".substr((microtime(true) - $time_start),0,4)."<br />";
بعد وقتی سایتتو اجرا کنی دقیق زمان اجرای هر کوئری رو میگه.
فیلدهایی که توی where استفاده میشه حتما براشون ایندکس مشخص کن.

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

کش هم یعنی اطلاعات رو از دیتابیس بگیری و توی فایل ذخیره کنی و دفعه بعد که صفحه اجرا میشه باید چک کنی فایل وجود داره اگر وجود داشت از فایل میخونی و اگر وجود نداشت از دیتابیس
این روش مشکلاتی هم داره که باید زمان آپدیت دوباره کش رو حذف کنی.
و اسم فایل های کش رو id سطر مشخص کن.

thacker
سه شنبه 08 مرداد 1392, 17:50 عصر
زمان اجرای کوئری ها توی لوکال و سرور یکی هست ؟!

MMSHFE
سه شنبه 08 مرداد 1392, 18:00 عصر
خیر یکی نیست. توی لوکال شما یک CPU (احتمالاً 8 هسته ای) دارین که بطور کامل به پردازش شما اختصاص داده شده و احتمالاً بیش از 4 گیگابایت هم RAM دارین ولی هاست اشتراکی خیلی محدودتر از این حرفهاست و همزمان داره به چندین سایت سرویس دهی میکنه. پس طبیعیه که زمان اجرای لوکال و... فرق میکنه اما درمورد مشکلتون، بهتره اطلاعات رو بعد از استخراج از دیتابیس، توی آرایه بگذارین و اتصال به MySQL رو ببندین چون ممکنه توی بقیه اسکریپتتون، کارهای سنگینی انجام بدین که چندین ثانیه پردازش لازم داشته باشه درحالی که اصلاً به دیتابیس نیازی نداشته باشین. پس بهتره منابع محدود رو بلافاصله بعد از استفاده، آزاد کنید.

wallfa
سه شنبه 08 مرداد 1392, 19:15 عصر
از اتصال بیهوده پرهیز کنید !
کوئری هاتون بهینه کنید ! بعضی مواقع میشه از یک کوئری به جای چند کوئری استفاده کرد .
کش قالب اضافه کنید !
در نهایت افزایش منابع سخت افزاری ! البته در زمانی که صرفه اقتصادی داشته باشد .