it-swarm.asia

تجربة العالم الحقيقي في قياس الأداء وضبطه

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

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

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

52
Richard Harrison

إجابة ماركدوريسون هي في الأساس الطريقة المقبولة لمهاجمة هذه المشكلة. سآخذ هذا أبعد قليلا.

عندما يكون لديك Pressflow لـ D6 أو Drupal لـ D7 و Memcached و Varnish تعمل جميعها بشكل جيد معًا ، فستحتاج إلى رمز مخصص - VCL ملف. هناك ملفات مجانية متاحة تجعل نقاط البداية ولكنك تحتاج دائمًا للعب معهم.

لجعل Varnish يعمل على النحو الأمثل تأكد من تشغيله باستخدام -s malloc xG بدلاً من -s file/path/to/file الافتراضي. أيضا مع الورنيش لديك عناصر ثابتة ذاكرة التخزين المؤقت لورنيش طالما يمكنك.

إذا كان لديك أكثر من خادم ويب ، قم بإزالة ETag من الرأس المرسل إلى Varnish في VCL. أقوم أيضًا بإزالة Expires وأعتمد ببساطة على Age و max-age في الرؤوس لذا قم بإعادة المتصفحات إلى الموقع.

الإصدار 1.5 (اعتبارًا من 3 مارس 2011) لا يزال الإصدار الأسرع من وحدة Memcached من Drupal.org. عادةً ما أنشره باستخدام حاوية واحدة لكل خادم لتقليل حركة مرور TCP لربط عدة صناديق على نطاق واسع)

تكوين التخزين المؤقت في "الأداء" إلى الخارجية وتعيين حد أقصى للعمر الذي سيرسل الرؤوس الصحيحة إلى وكيل التخزين المؤقت مثل الورنيش.

إذا لم تتمكن من تخزين صفحات معينة في ذاكرة التخزين المؤقت بشكل صحيح في Varnish ، فراجع منشورات المدونة على الويب التي توضح بالتفصيل كيفية فحص الطلبات. هنا مثال على المنشور الذي كتبته منذ فترة: ما الذي يمنع الورنيش و Drupal Pressflow من التخزين المؤقت لمرات مشاهدة صفحة المستخدمين المجهولين

يجب عليك اختيار InnoDB (أو أحد الأسماء الأخرى من موفرين آخرين مثل XtraDB) لـ MySQL ونقل جميع الجداول إليه. ثم تحقق من مشاركة المدونة هذه للحصول على نصيحة أساسية حول الضبط http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/

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

تتضمن الأساسيات الأخرى وجود APC في PHP. إذا كنت تستخدم CGI سريعًا بدلاً من mod_php ، فعليك قضاء بعض الوقت في محاولة مشاركة ذاكرة التخزين المؤقت APC عبر مثيلات php من خلال تكوين برنامج نصي مجمع جيد. تأكد أيضًا من وجود ذاكرة التخزين المؤقت APC في ملف معين للذاكرة للضغط على كل بتة أخيرة من PHP.

45
Stewart Robinson

أوصي بالبدء بـ Pressflow (في حالة استخدام Drupal 6) ، Memcache ، Varnish ، وبعض الأشكال من شبكة توزيع المحتوى (CDN) مثل Akamai. يجب أن تكون النتيجة النهائية أقل عدد ممكن من هؤلاء المستخدمين الذين يصلون فعليًا إلى خادم Origin.

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

إذا كان لديك مجموعة صغيرة من المستخدمين الداخليين (مثل مجموعة المحررين) التي تحتاج إلى أن تكون قادرة على عرض نسخة غير مخزنة من الموقع ، فإنني أوصي بكشف نسخة غير مخزنة من موقعك على عنوان URL مختلف (محمي خلف VPN أو ما يعادلها إن أمكن).

22
markdorison

2500 نتيجة في الثانية على مدار يوم - إذا كنت تعني "تم ضرب الصفحة" ، فستحصل على 216 مليون صفحة في اليوم. دعني أخبرك بهذا: ليس لديك 216 مليون صفحة في اليوم. أنا أحب هؤلاء العملاء ...

ومع ذلك ، لا تقول بيانات حركة المرور الأولية أي شيء. على الرغم من أن النصيحة الواردة في هذا الموضوع سليمة حول Varnish/CDN إذا كان كل ما لديك هو حركة مرور مجهولة ولكن إذا قمت بتسجيل الدخول ، فأنت تواجه تحديًا. ولكن قبل أن تنفق الكثير من الوقت والجهد لحل مشكلة ما ، تأكد من لديك مشكلة. 2500 ضربة في الثانية ، bing يحصل على أقل من ذلك ، هل تدرك ذلك ، أليس كذلك؟

15
user49
  • جانب الخادم

    • قم بتثبيت الورنيش لصفحات التخزين المؤقت للمستخدمين المجهولين.
    • تثبيت نظام التخزين المؤقت المستمر (Memcached ، APC ، Memcache).
    • استخدم CDN مثل Akamai لخدمة الملفات الثابتة (JavaScript ، CSS ، الصور).
  • جانب الرمز

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

    • تأكد من فهرسة الجداول بشكل صحيح للبحث بشكل أسرع.
    • لا تقم بتخزين السجلات غير الضرورية ، سيتم الوصول إلى قاعدة بيانات العقدة 100 دائمًا بشكل أسرع من قاعدة بيانات العقدة 3 ملايين.
6
amateur barista

سأستمع أيضًا إلى بودكاست Lullabot عن الطريقة التي أنشأوا بها موقع Grammys.com للانفجار المروري على مدار أسبوع. كان شرحًا تعليميًا جميلًا.

http://www.lullabot.com/podcasts/podcast-92-grammycom

5
Randy Burgess

بالنسبة للمواقع عالية الحركة ، يجب عليك استخدام خوادم متعددة وتحميل موازن أو استخدام CDN ببساطة. كما أنه من المهم جدًا التخزين المؤقت قدر الإمكان لتقليل الحمل على خوادم الويب.

يساعد استخدام شبكة توصيل المحتوى ( CDN ) على توزيع الموارد عبر عدة نطاقات (تقسيم المجال) مما يقلل من الحمل على خادم الويب.

يساعد استخدام CDN في التخزين المؤقت الموزع والتسارع عن بُعد ، ويساعد أيضًا في تخفيف هجمات DDoS ، بسبب نقاط نهاية متعددة. يساعد في الأمان ، لأن المحتوى المخبأ أكثر صعوبة في الاستغلال.

موفرو الأمثلة: Fastly و Rackspace و Akamai و Azure و CloudFlare و Amazon و MaxCDN و Verizon.

إليك بعض الاقتراحات الأخرى:

  • باستخدام CDN ، استخدم المجالات التي لا تحتوي على ملفات تعريف ارتباط للمكونات الثابتة المخزنة مؤقتًا (مثل sstatic.net ). نظرًا لأن بعض الوكلاء قد يرفضون التخزين المؤقت للمكونات المطلوبة مع ملفات تعريف الارتباط.
  • قم بتدفئة ذاكرة التخزين المؤقت بعد محو ذاكرة التخزين المؤقت (باستخدام wget --- Cache Warmer ، Drush ECL ).
  • استخدم مراقبة الأداء (على سبيل المثال New Relic أو Yottaa التي تتكامل مع دروبال).
  • استخدم أداة مراقبة لموقعك على الويب (مثل Nagios).
  • قم بتثبيت Varnish and Varnish HTTP Accelerator Integration module ، ثم تكوينه .
  • Varnish + Authcache: حدد هذا مثال VCL لـ Authcache ملف التكوين Varnish.
  • ضع في الاعتبار الجنيه أو NGINX أمام الورنيش. انظر: لماذا باوند رائع أمام الورنيش .
  • يمكن أن يعمل NGINX كخادم وكيل عكسي وموازن تحميل ، لذلك يمكن أن يحل محل الجنيه والورنيش.
  • فكر في إصدار تجاري من Varnish أو NGINX لاستخدام الميزات غير المتاحة في إصدار المصدر المفتوح "المجتمع".
  • ضع في اعتبارك تحميل الأجهزة/التخزين المؤقت لاستبدال الورنيش والجنيه (على سبيل المثال BIG-IP F5 ).
  • استخدم أدوات مثل ab ، JMeter لـ TTFB ، واختبار التحميل والضغط على تطبيق الويب.

لذلك يمكن أن تبدو بنية الويب الخاصة بك من وجهة نظر المستخدم كما يلي:

  1. المستخدم (التخزين المؤقت للمتصفح المحلي).
  2. NGINX أو Pound + Varnish (موازن التحميل ، وكيل عكسي كمسرع HTTP).
  3. أباتشي (خادم الويب).
  4. PHP-FPM (مدير عمليات PHP FastCGI).
  5. MariaDB (قاعدة بيانات).

ل Drupal ، تحقق: كيف تحسن Drupal؟

3
kenorb

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

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

كان هذا عرضًا تقديميًا في DC SF حول كيفية قيام الاقتصادي بذلك. http://sf2010.drupal.org/conference/sessions/performance-testing-economist-online- باستخدام طاحونة

3
Jeremy French

يمكنك أيضًا فحص إعادة توزيع الحمل على خوادم متعددة بمساعدة حل يستند إلى نظام أسماء النطاقات أو حل موازنة تحميل البرامج/الأجهزة. هذا سيخبز أيضًا في التسامح مع الخطأ.

0
James Stallings

تمكين ملحقين:

  • Zend OPcache
  • wincache

سوف يعمل أدائك بشكل أفضل.

إذا كنت تتطلع إلى twig Zend OPcache و Wincache في Microsoft Azure ، فقم أولاً بإنشاء اسم المجلد "ini" ضمن "D:\home\site\ ". أيضًا ، أنشئ ملفين ، ".user.ini "و" settings.ini "

أضف التكوين التالي في كل ملف:

. user.ini

[PHP]
post_max_size = 32M
memory_limit = 512M
zend.enable_gc = On
upload_max_filesize = 32M
opcache.enable=1

setting.ini

wincache.ocenabled = 1
wincache.ocachesize = 255

أيضًا ، قم بإضافة إعداد تطبيق إلى تطبيق الويب الخاص بك باستخدام مفتاح PHP_INI_SCAN_DIR و قيمة d:\home\site\ini

بعد تغيير PHP_INI_SYSTEM قم بإعادة تشغيل تطبيق الويب. إذا كنت تريد معرفة المزيد عن تكوين الوخز ، يرجى مراجعة وثائق Microsoft .

بعد الإعداد أعلاه ، يتم تحميل موقع الويب الخاص بي Drupal (Drupal 8.3) في غضون 3 ثوانٍ.

0
npcoder