bastr3

ماهي أنظمه الكاش بالنسبه للمجلات العالميه مثل جووملا وورد بريس

7 ردود في هذا الموضوع

بسم الله الرحمن الرحيم

من تابع مقالاتي يعلم أنني أقوم بعمل مجلة محتوى والآن وبعد تطورات هائله وقفت أمام موقع إخباري عدد متصفحيه يوميا أكثر من 30000 متصفح بواقع أكثر من 100000 ريكويست , عند إختبار المجله على الموقع ﻻحظت عدة أمور

1- بطئ شديد في فتح الموقع وأي موقع آخر على السيرفر

2- بعض الملفات والإعدادات تم حذفها

3- استهلاك عالي للباندويث يصل إلى أكثر من عشرة جيجا كل ثلاث ساعات تقريبا

بعد البحث عن الحلول قمت بعمل التالي :

1- حفظ نتائج إستعلامات قواعد البيانات في ملفات مؤقته لمده خمسة دقائق

2- عمل ملفات مؤقته لكل مديول في المجله مع إمكانيه إستثناء أي مديول أريده مثل عداد الزوار مثلا , لمدة ربع ساعه

3- عمل ملفات مؤقته لكامل الصفحة المطلوبه لمدة دقيقه

4- إستخددام mod_gzip_on و ExpiresActive في ملف htaccess

هل هذا كافي .. مع العلم أنني لم أجرب بعد النتائج ولكن قبل التجربه لأن التجربه مخيفه خصوصا أن الخادم يحتوي على مواقع لشركات كبيره والموقع الإخباري لديه زوار ﻻيريدون رؤية الموقع داون ...

السؤال الثاني هل يمكن تجربه الموقع على شيء تخيلي ؟

السؤال الثالث حتى أكون على رؤيه واقعيه للأحداث , ماهي مواصفات الخادم الذي يمكن أن يعمل بشكل عادي على موقع إخباري له عدد زوار بهذا الحجم ؟ المواصفات من ناحيه سرعه الإنترنت والرام وسرعه الcpu لو فرضنا أن الموقع حجم المحتوى فيه لكل صفحة هو واحد ميغا صور (متغيره في كل صفحة وﻻ يمكن تكييشها ) وواحد ميغا ملفات الجافاسكريبت والستايل (يمكن عمل كاش لها )

أرجو من كل من له خبره في هذا المجال تزويدنا بما يعرف

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هذه المشكلة غالبا يقع حلها في اكثر من طريقة :

1 - استخدام load balancing و توزيع الحمل على اكثر من سيرفر.

2 - حفظ الناتج من الصفحة كاملا في ملفات html باستخدام دوال مثل ob functions .

3 - استخدام key-value memory cache مثل memcached و هي مستحدمة كثيرا في مواقع ذات الضغط العالي مثل youtube.

4 - حاول تخفيف الحمل عن عن سيرفر وعمل offline cron job بدل من عملها عند كل request .

5 - تاكد من فعالية الخوازميات و functions المستحدمة و عمل optimize لجمل الSQL اي تاكد انك قمت بكتابتها بافضل شكل ممكن.

6 - اللجوء لحلول على cloud مثل amazon ws .

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أشكرك أخي أحمد على هذه المعلومات القيمه

الحمد لله تم العمل وحتى الآن الأمور مستتبه مع وجود 300 ريكويست خلال الدقيقه الواحده وربما أكثر والحلول كانت قريبه جدا مما ذكرت , حتى أنني كنت أريد الإنتقال إلى سيرفر ذو مواصفات أعلى لحل مشكله الترافيك وسرعه الإنترنت للسيرفر ولكن تم تخفيف حجم الصفحة من خلال تكييش معظم الملفات وتصغير الصور المستخدمه لكل خبر من خلال نظام re-size للصور بناء على مكان ظهورها وتم استخدام سيرفر خاص لصور التصميم وملفات الجافاسكريبت لتخفيف الحمل على السيرفر الرئيسي , فعليا استفدت من هذه التجربه كثيرا خصوصا أنني كنت أقرأ عنها والآن أصبحت في قلب الحدث :) والحمد لله

هل لديك بيانات حول إمكانيات السيرفر الذي يمكن أن يتحمل موقع إخباري رقمه على أليكسا أقل من مئة ألف ؟ مثلا موقع المنتدى هذا ماهي مواصفاته فقط لكي أعرف مكان مجله المحتوى التي لدي بالنسبه للمجلات الأخرى في مجال الترافيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

المشكله ليس في عدد الزوار طول اليوم و لكن في العدد الموجود في نفس اللحظة فكان عندي موقع زوارة online حوالي 800 زائر فاستخدمت سيرفر بالمواصفات التالية:

عدد 2 بروسيسور AMD ذو أريعة أنويه (مشفاكر رقم المعالج)

4 جيجا رام

هارد 250 جيجا

ترافيك 5000 جيجابايت

و كان شغال تمام بدون أي مشكلة بل شعرت أنه فائض جداً جداً عن الحاجة و بالمناسبة كان ثمنة وقتها 100$ فقط في الشهر بدون لوحة تحكم.

بالمناسبة حاول ضغط ملفات js و css و ضم كل نوع بأقصى درجة ممكنه في ملف واحد لتقليل الترافيك.

تم تعديل بواسطه asm-soft
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
هل لديك بيانات حول إمكانيات السيرفر الذي يمكن أن يتحمل موقع إخباري رقمه على أليكسا أقل من مئة ألف ؟ مثلا موقع المنتدى هذا ماهي مواصفاته فقط لكي أعرف مكان مجله المحتوى التي لدي بالنسبه للمجلات الأخرى في مجال الترافيك

الموضوع يعتمد على الميموري المستخدمة من قبل الـ php في الrequest الواحدة وحجم الميموري المتاحة على سيستم:

مثلا لو كل طلب على السيرفر يستهلك 2MB و حجم الذاكرة المتاحة 512MB سوف يستحمل السيرفر 256 طلب وهكذا ..

تذكر ان هناك اعدادات حجم الميموري في PHP.ini و هناك دوال تستخدم لمعرفة استحدام الذاكرة : http://php.net/manual/en/function.memory-get-usage.php اقرء التعليقات الموجودة اسفل الصفحة .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

للفائده هذا ماتم استخدامه وﻻحظت فرق كبير بين النسخة الأولى والنسخة الحاليه

من ناحيه الماموري استخدمت الدالهmemory_get_usage() كما ذكر الأخ أحمد ولكن في نهايه الكود وفي بدايته ولم تكن تعطي النتائج الحقيقيه فقط كانت الصفحة تعطي رساله خطأ

Fatal error: Allowed memory size of

مع أنني استخدمت مساحه كبيره جدا وصلت إلى 800 ميغا

ini_set('memory_limit','820M');

وبعد الفحص والبحث وجدت أن الدوال في بي أتش بي ﻻتقوم بتفريغ الماموري عندما تقوم بعمل دوال مستدعاه داخل بعضها مثل


function x(){
return y();
}

function y(){
return x();
}

ومثل هذه الحاله أستخدمها في نظام المفسر الخاص بالمجله لكتابة جمل برمجيه داخل ملفات الhtml أو القوالب , بعد البحث وصلت إلى طريقه لتفريغ الماموري وذلك بالسؤال عن حجم الماموري بواسطه الداله السابقه وإذا وصلت إلى 2 ميغا مثلا أقوم بعمل إرجاع لقيمه فارغه والخروج من اللوب داخل الدوال المتداخله ثم العودة لإكمال التنفيذ مما يحرر الماموري من جميع النتائج المتراكمه

function x($t) {
if (memory_get_usage() > 6757152) {
$_SESSION[SyntaxCode] = $t;
return false;
}

return y($t);
}

function y($t) {
return x($t);
}

$t = x($t);
while ($_SESSION[SyntaxCode]) {
$t = $_SESSION[SyntaxCode];
$_SESSION[SyntaxCode] = '';
$t =x($t);
}

مع هذا الحل البسيط يمكنني الآن إستخدام حتى مساحه 3 ميغا لحجم كبير من الأوامر

المرحله الثانيه هي إنشاء ملفات مؤقته لجميع الأوامر بعد تنفيذها ولمدة معينه لكي ﻻ أقوم بهذه العمليه لكل زائر وبهذا أصبح السيرفر في وضع ممتاز عما كان عليه سابقا

بالنسبه لملفات الستايل والجافاسكريبت فقط قمت بعمل داله تقوم بالبحث عن جميع ملفات الستايل داخل المشروع ودمجها معا بترتيب أسمائها أبجديا ثم عمل ضغط لها وذلك بحذف جميع التعليقات والأسطر وعلامات التنصيص طبعا مع الأخذ بعين الإعتبار مسار الصور لكل ملف وهذا كود تقريبي لهذه العمليه بالنسبه للستايل


foreach ($ARRAY_CSS as $k => $v) {
$cssx = file_get_contents($v);
$css.=str_replace('url(/template/' . $_FCSSILE[$k] . '/images/http://', 'url(http://', str_replace('{}', '{ }', str_replace('url(', 'url(/template/' . $_FCSSILE[$k] . '/images/', str_replace(array('; ', ' }', '{ ', ': ', ' {'), array(';', '}', '{', ':', '{'), str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), "", preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $cssx))))));
}

مع إمكانيه دمج جمل الستايل التي تكون موجوده داخل الصفحة وبين وسوم الhtml

كذلك الأمر بالنسبه للجافاسكريبت وبعد ذلك أقوم بحفظ الملف الناتج بناء على متغير يتم تغييره في حال تم عمل أو إضافة أي ملف جديد أو التعديل على أي ملف من قبل المدير

بالإضافه لما تم ذكره في بدايه الموضوع وما تم الإستفاده منه من خلال رد الأخ أحمد ...

بالمناسبه حاولت فهم دوال ال ob ولكني لم أفهم ماهيتها وأهميتها فحاليا أقوم بحفظ كامل الصفحة في متغير واحد ثم أقوم بحفظ نتائج المتغير كملف html مؤقت بدون إستخدام دوال ال ob مع أني أرى أنها مفيدة نظرا لوجودها في كثير من السكريبتات , هل يمكنكم شرح الفرق بين إستخدامها وعدمه ؟

تم تعديل بواسطه بسام العيساوي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

استفدت جداً من هذا الموضوع

شكراً لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .