it-swarm.asia

drupal زيادة سرعة الموقع

أنا أستخدم موقع drupal يحتوي على سمة من rockettheme.

المستخدمين مستخدمين الأعضاء. المشكلة لسبب غير معروف الموقع بطيء جدا. يستغرق حوالي 20 ثانية لفتح الصفحة.

لقد حاولت تبديل VPS ، ولكن لا مكاسب الأداء.

أنا لا أستخدم العديد من الوحدات ، التي من شأنها أن تعطل الموقع.

ما هي الحلول الممكنة التي يجب أن أنظر إليها لزيادة سرعة الموقع ليتم فتحه في الوقت العادي.

نفذت 120 استفسار في 113.52 ميلي ثانية. يتم تسليط الضوء على الاستعلامات التي تستغرق وقتًا أطول من 5 مللي ثانية والاستعلامات التي يتم تنفيذها أكثر من مرة. كان وقت تنفيذ الصفحة 2534.15 مللي ثانية.

نفذت 87 استفسار في 24.6 ميلي ثانية. يتم تسليط الضوء على الاستعلامات التي تستغرق وقتًا أطول من 5 مللي ثانية والاستعلامات التي يتم تنفيذها أكثر من مرة. وقت تنفيذ الصفحة كان 2609.59 مللي ثانية.

تم تنفيذ 123 استفسار في 41.05 مللي ثانية. يتم تسليط الضوء على الاستعلامات التي تستغرق وقتًا أطول من 5 مللي ثانية والاستعلامات التي يتم تنفيذها أكثر من مرة. كان وقت تنفيذ الصفحة 1282.27 مللي ثانية.

لا أعتقد أن هذه طبيعية.

7
Nikhil

تحديث:

لقد وجدت أن ملف mootools.js خاصًا يستغرق وقتًا طويلاً لتحميله في ylsow ، لكن فتح الملف مباشرة - لا يوجد أي تأخير.

هذا تلميح جيد جدًا في النهاية - هل أدوات MooTools مطلوبة حقًا؟ Drupal تستخدم jQuery حصريًا بشكل أساسي ومعظم الوحدات المساهمة تساهم في ذلك ، لذا يرجى العلم أن استخدام أكثر من إطار جافا سكريبت رئيسي في نفس الوقت ، بينما كان ذلك ممكنًا ، لا ينصح به عمومًا معظم المطورين ، عادةً - يتطلب معالجة مخصصة على الأقل وقد يعرض كل أنواع المشكلات الغريبة (أي يصعب تصحيحها) بغض النظر:
ستجد العديد من المشاركات ذات الصلة ضمن jQuery + MooTools في Stack Overflow ، راجع هذه الإجابة المثالية على Mootools و JQuery Integration ذكر صفحة الضبط البطيء على وجه التحديد.

نظرًا لأنك لا تستخدم العديد من الوحدات أفترض أن هناك منطقة معزولة فقط من الوظائف هي التي تطلب MooTools على وجه التحديد ، وبالتالي أقترح عليك إيقاف ذلك تمامًا (أي تأكد من أن mootools.js هو لم يتم تحميل بعد الآن) ومعرفة ما إذا كان يحدث أي فرق.


يمكنك التحقق من الإجابات المتنوعة على السؤال المعني على Stack Overflow - بينما يتداخل معظمهم مع الإجابات الواردة هنا في غضون ذلك ، هناك بعض البصيرة الإضافية المنتشرة في التعليقات هنا وهناك.

بخلاف ذلك ، أود التأكيد على شيء مهم مرة أخرى ، كما ذكر DisgruntledGoat و bpeterson76 بالفعل إلى حد ما (+1 لكل منهما):

على الرغم من أن Drupal ليست أسرع CMS في المقام الأول ، فإن مرات تحميل الصفحة التي تراها ليست طبيعية على الإطلاق ( على الرغم من إمكانية ذلك على الأنظمة/الخوادم التي تم تكوينها بشكل سيئ) - لذلك يجب عليك تحليل وتحديد السبب (الأسباب) أولاً ، قبل تطبيق التحسينات من أي نوع! بالتأكيد ، بعض التحسينات الموصى بها قد تساعد حتى بدون ذلك ، ولكن القاعدة الذهبية لتحسين الأداء (وغيرها) هي في الحقيقة فهم المشكلة بدلاً من التجربة والخطأ.

لتبدأ ، أود أن أعلق على ثلاثة موضوعات أثيرت على وجه التحديد وأن أقدم مؤشرًا على توثيق أكثر شمولًا بشأن الموضوع أدناه:

لقد حاولت تبديل VPS ، ولكن لا مكاسب الأداء

  • حسنًا ، لا يزال يتعين عليك التحقق بشكل صريح ، ما إذا كان مكدس VPS و LAMP قيد الاستخدام طبيعيًا في المقام الأول (أي بدون دروبال)؟
    • الجواب من bpeterson76 يعالج الأسباب المحتملة.

أعتقد أن السبب الرئيسي هو الموضوع.

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

لا أعتقد أن استعلام SQL على خطأ.

  • لقد أدركت بالفعل أنه يجب عليك التحقق من هذا الافتراض أيضًا - يمكن تناول ذلك بطرق مختلفة ، سأبدأ بـ devel module ، التي تحتوي على عروض متنوعة بخصوص تسجيل الأداء بما في ذلك وقت تنفيذ SQL (الأشياء الأخرى مفيدة وكذلك بالطبع).
    • يرجى ملاحظة أنه في أوقات تنفيذ SQL الأكثر دقة ، يجب عليك اللجوء إلى أدوات مخصصة لنظام قاعدة البيانات قيد الاستخدام.

كل هذا ، وأكثر من ذلك بكثير ، تتم معالجته عبر التخزين المؤقت لـ Drupal ، السرعة والأداء - قد يبدو مركز الموارد هذا غالبًا من النظرة الأولى ، لكن كما قلت الفهم المشكلة هي مفتاح لحل مشاكل الأداء - للسماح لبدء قفزة لا يزال في نهاية المطاف ، أوصي على وجه التحديد لقراءة اعتبارات ضبط الخادم ، على وجه الخصوص القسم فهم وتكوين مكدس للأداء .

حظا سعيدا!

1
Steffen Opel

إذا كان تحميل الصفحة 20 ثانية ، فمن المحتمل أن يكون هناك عنق الزجاجة كبير في مكان ما. قد تقلل APC من 5 إلى 10 ثوانٍ ، لكن هذا لا يزال غير جيد بما فيه الكفاية بالنسبة لجانب الخادم. ولن يساعد ذلك إذا كان عنق الزجاجة عبارة عن استعلام SQL.

يمكن للوحدات النمطية أن تبطئ الموقع قليلاً ولكن ليس بهذا القدر. حاول تعطيل كل واحد بدوره لمعرفة ما إذا كان هناك أي تحسينات كبيرة.

حل آخر إذا لم تتمكن من تحسين سرعة التخزين المؤقت للصفحات قدر الإمكان. مع العديد من المواقع (باستخدام CodeIgniter) ، وجدت أنه يحدث فرقًا هائلاً - يستجيب الخادم على الفور ولديك وقت العميل فقط.

بناءً على ما تدرجه في التأخير لمدة 20 ثانية (أي جانب الخادم فقط أو جانب العميل أيضًا) ، قد تجد أفضل ممارسات Yahoo صفحة مفيدة.


لتحديد مكان عنق الزجاجة ، إلقاء نظرة على وحدات منشئ ملفات التعريف لـ Drupal (إذا كان هناك أي) ، سيعلمونك بأية أجزاء تكون فيها الشفرة بطيئة. أو يمكنك إضافة رمز التوقيت الخاص بك إلى القالب:

$time1 = microtime();
// some chunk of code
$time2 = microtime();
// another chunk of code
$time3 = microtime();
echo 'First chunk: ', ($time2-$time1/1000), ' seconds';
echo 'Second chunk: ', ($time3-$time2/1000), ' seconds';

كرر ذلك في أماكن مختلفة ، ويجب أن تكون قادرًا على تضييقه إلى قسم أو قسمين يعملان لمدة تتراوح بين 10 و 20 ثانية.

4
DisgruntledGoat
  • استخدام ذاكرة التخزين المؤقت شفرة التشغيل مثل APC
  • استخدم أداة مثل xDebug لمعرفة أين توجد اختناقاتك. وبهذه الطريقة تعرف ما تحتاج إلى معالجته بدلاً من مجرد التخمين.
3
John Conde

عند إنشاء تطبيقات PHP، وجدت أنه يمكنني اختيار اختناقات منخفضة المستوى باستخدام أدوات مطوري Firefox أو Chrome. انقر فوق علامة تبويب الموارد وشاهد عند تحميل عناصر الصفحة. إنها ذات قيمة خاصة عند العمل مع طلبات XHR (أجاكس).

ابدأ من خلال اختبار الاتصال بالخادم. لدي جهاز Dev كان في وضع مماثل في اليوم الآخر .... يزحف جهاز Dev ، ويستغرق تحميله أكثر من 10 ثوانٍ. ولكن ، لدي رمز مماثل على خادم آخر متطابق (ولكن مخصص) يعمل بسرعة البرق. إجراء اختبارات ping ، إنه بطيء بشكل مؤلم. تبين أن الجهاز مشترك وأن أحد الأشخاص الآخرين الذين لديهم حساب على الخادم يشغل موقع النطاق الترددي العالي للغاية (من المحتمل أن يكون موقعًا للبالغين) يؤدي إلى إبطاء الجميع. يتم الآن نقل هذا الموقع المسيء من قبل المضيف.

Xdebug هو بالتأكيد خيار جيد كما ذكر أعلاه. لكن ذلك لا يصل دائمًا إلى مصدر المشكلة في حالة عدم وجود أخطاء. سأبدأ بسجل الخطأ أولاً ، تأكد من عدم إنشاء المزيد. ثم Xdebug.

كنت أتابع مع تعطيل الميزات واحدا تلو الآخر. أيضًا ، سيكون من المفيد مراقبة تحميل الخادم للتأكد من أن أي شيء غير ذي صلة لا يعوق عمليات MySql أو Apache.

أخيرًا ، إذا كانت المشكلة لا تزال غير ثابتة ، فسأعزل المناطق التي أعتقد أنها تسبب المشكلة وإدراج طوابع زمنية لبداية/نهاية زمنية أقوم بإخراجها لتسجيل الدخول أو البريد الإلكتروني. هذا يبدو ساذجًا ، لكنني وجدت زيادة بنسبة 200٪ في الأداء في الكود باستخدام هذه الطريقة.

2
bpeterson76

يتم تشغيل التخزين المؤقت في /admin/settings/performance؟

الأمر يستحق التدقيق المزدوج قبل الدخول في حلول أكثر تعقيدًا.

1
WalterJ89

أوصي باستخدام Postgresql ، drupal يدعمها.

0
NARKOZ