ما هي ذاكرة التخزين المؤقت لرموز تشغيل PHP التي يجب أن أستخدمها لتحسين الأداء؟[مغلق]

StackOverflow https://stackoverflow.com/questions/28716

  •  09-06-2019
  •  | 
  •  

سؤال

أحاول تحسين الأداء في ظل التحميل العالي وأرغب في تنفيذ التخزين المؤقت لشفرة التشغيل.أي مما يلي يجب أن أستخدمه؟

أنا أيضًا منفتح على أي بدائل أخرى قد تنزلق تحت رادارتي.

يعمل حاليًا على مخزون Debian Etch مع Apache 2 وPHP 5.2

[التحديث 1]

تمت إضافة روابط تثبيت HowtoForge

[التحديث 2]

بناءً على الإجابات والتعليقات المقدمة، قمت باختبار جميع التطبيقات الثلاثة باستخدام خطة اختبار Apache JMeter التالية في طلبي:

  • تسجيل الدخول
  • الوصول إلى الصفحة الرئيسية

مع 50 اتصالاً متزامنًا، تكون النتائج كما يلي:

لا يوجد تخزين مؤقت لرمز التشغيل
No Opcode Caching

ناقلة جنود مدرعة
APC

eAccelerator
eAccelerator

XCache
XCache

الرسم البياني للأداء (الأصغر هو الأفضل)
Performance Graph

من النتائج المذكورة أعلاه، يتمتع eAccelerator بميزة طفيفة في الأداء مقارنة بـ APC وXCache.ومع ذلك، فإن ما يهم أكثر من البيانات المذكورة أعلاه هو أن أي نوع من التخزين المؤقت لشفرات التشغيل يعطي دفعة هائلة في الأداء.

لقد قررت استخدام APC للسببين التاليين:

  • الحزمة متاحة في مستودع دبيان الرسمي
  • لوحة تحكم أكثر وظيفية

لتلخيص تجربتي:

سهولة التركيب:APC > eAccelerator > XCache
أداء:eAccelerator > APC، XCache
لوحة التحكم:APC > XCache > eAccelerator

هل كانت مفيدة؟

المحلول

أعتقد أن الإجابة قد تعتمد على نوع تطبيقات الويب التي تقوم بتشغيلها.لقد اضطررت إلى اتخاذ هذا القرار بنفسي منذ عامين ولم أتمكن من الاختيار بين Zend Optimizer وeAccelerator.

من أجل اتخاذ قراري، استخدمت ab (Apache bench) لاختبار الخادم، واختبرت المجموعات الثلاث (zend، وeaccelerator، وكلاهما قيد التشغيل) وأثبتت أن eAccelerator بمفرده قدم أفضل أداء.

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

نصائح أخرى

أستخدم APC لأنه كان من السهل تثبيته على نظام التشغيل Windows وأقوم بالتطوير على WAMP.

تمت مناقشة دمج APC في PHP6 هنا:http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc

وهناك توجيهات حول تثبيت APC على Debian Etch هنا:http://www.howtoforge.com/apc-php5-Apache2-debian-etch

لقد قمت بتشغيل عدة المعايير مع eAcclerator، APC، XCache, و Zend Optimizer (على الرغم من أن Zend هو مُحسِّن وليس ذاكرة تخزين مؤقت).

النتائج المعيارية http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

نتيجة:eAccelerator هو الأسرع (في جميع الاختبارات)، يليه XCache وAPC.(الرقم الموجود في الرسم البياني هو عدد الثواني اللازمة للاتصال بصفحة WordPress الرئيسية 10000 مرة).

جعل Zend Optimizer كل شيء أبطأ (!).

لا أستطيع أن أخبرك على وجه اليقين، ولكن المكان الذي أعمل فيه الآن هو البحث في APC وeAccelerator.ومع ذلك، قد يؤثر هذا عليك - سيتم دمج APC في الإصدار المستقبلي من PHP (بفضل إد هابر على الرابط).

لقد حققت نجاحًا جيدًا مع eAccelerator (تحسن السرعة بدون تحميل ملحوظ) ولكن XCache يبدو أيضًا واعدًا جدًا.قد ترغب في إجراء بعض التجارب مع كل منها، على الرغم من أن تطبيقك قد يختلف في كل منها.

أستخدم XCache منذ أكثر من عام دون أي مشاكل على الإطلاق.

لقد حاولت التبديل إلى eAccelerator، لكن انتهى بي الأمر بمجموعة من أخطاء التجزئة (وهو أقل تسامحًا مع الأخطاء).الميزة الرئيسية لـ eAccelerator هي أنه ليس مجرد ذاكرة تخزين مؤقت لشفرة التشغيل، بل هو مُحسِّن أيضًا.

يجب عليك اختبار التطبيق الخاص بك بشكل كامل مع كل واحد منهم للتأكد من عدم وجود أي مشاكل، وبعد ذلك سأستخدم apachebench لاختباره تحت التحميل.

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

لذلك أود أن أقول:

  1. لا تستخدم أيًا مما سبق.قم بشراء المزيد من القصدير بدلاً من ذلك، فهو أكثر موثوقية (على سبيل المثال.خالية من الأخطاء) طريقة لزيادة الأداء.أو
  2. اختر أيًا مما سبق هو الأقوى، بعد اختبار البنطلون من التطبيق الخاص بك.

لكني أقول:

  1. تأكد من أن تحليل كود PHP هو الذي يسبب مشاكل في الأداء لديك عن طريق تحديد ملف تعريف التطبيق الخاص بك.أعتقد أنه من المحتمل جدًا ألا يكون الأمر كذلك - وفي هذه الحالة ستضيع وقتك (في الواقع، تستخدم وقتك بشكل سلبي بشكل منتج) عن طريق تثبيت أي منها.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top