LAMP على Raspberry Pi 2 - ما يمكن لـ ARM CPU + USB

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

المقدمة


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

لماذا Raspberry Pi 2 model B؟


نظرًا لأن أضعف نقطة من هذه الأنظمة من وجهة نظر الاستضافة هو المعالج ، الذي يتمتع بأداء نسبي منخفض جدًا (المزيد عن ذلك لاحقًا) ، سنحاول تنظيم خادم ويب على خيار الميزانية ، ولكن ، مع ذلك ، يمكن أن يتحول إلى قوة كافية مهمتنا هي Raspberry Pi 2 model B. وهو يحتوي على معالج رباعي النواة يعمل في الوضع العادي دون تبريد بسرعة 900 ميجا هرتز والقدرة على تغيير هذا التردد من 700 إلى 1200 ميجا هرتز. لن نرفع تردد الساعة ، نلاحظ فقط أنه من أجل "رفع تردد التشغيل" ستحتاج إلى مشعاع ، وربما مروحة. نظرًا لأنه حدث اليوم أن Raspberry Pi 2 model B لديه المعالج الأكثر إنتاجية بين "زملاء الدراسة" ، فإننا نختاره للاختبار.

الميزات التقنية للمنصة المعنية


وحدة المعالجة المركزية

لدينا معالج غير عادي ، عائلة RISC. باختصار ، يمكننا القول أن مجموعة التعليمات لمثل هذا المعالج أصغر بكثير من تلك المعالجات "العادية" ، ولكنها تنفذ أوامر بسيطة بسرعة كبيرة. ولكن لتنفيذ تعليمات معقدة ، فإن مثل هذه الأوامر البسيطة تحتاج إلى الكثير. لذلك ، تدور الساعة أكثر. لذلك إذا بدا لأي شخص أن 4 نوى من 900 ميجاهرتز لكل منها أكثر من كافية لخادم الويب ، فيجب عليك إجراء تعديل - Broadcom BCM2836 رباعي النواة Cortex A7 لمهمتنا لن يكون أسرع من Pentium القديم 300-400 ميجاهرتز. صحيح ، تجاوز 6 مرات النموذج السابق أحادي النواة على Raspberry Pi ، و 1.9 مرة متقدمًا على زميل الفصل ثنائي النواة على Banana Pi M2 (على الرغم من أنه تم الإعلان عنه من خلال وجود SATA و Gigabit Ethernet ، إلا أنه أقل ملاءمة لخادم الويب بسبب معالجه )وبسبب بطء المعالج المركزي على وجه التحديد ، نلاحظ انخفاضًا قياسيًا في استهلاك الحواسيب الصغيرة. وفقًا للبيانات المتاحة ، يستهلك Raspberry Pi من 2 إلى 3 واط ، 4 واط عند ذروة الحمل ، 1 واط في وضع الخمول. حسنًا ، 2-3 واط (5 فولت ، 0.4-0.6 أمبير) في المتوسط ​​للنظام بأكمله ، باستثناء قوة وسائط التخزين - وهذا ما يستحق القتال من أجله في مجال استضافة الويب للشركات أو المنزل ، مما يجعله مربحًا مع الاقتصاد وجهات نظر.ما الذي يجعله مفيدًا اقتصاديًا.ما الذي يجعله مفيدًا اقتصاديًا.

ذاكرة

الذاكرة المستخدمة ليست الأسرع ، فهي DDR2 ، ولكن هناك كمية كافية من الذاكرة - 1 جيجابايت. يجب أن أقول أن هذا مبلغ جيد لخوادم الويب العادية التي تعمل بنظام Linux.

واجهة الشبكة

واجهة شبكة 100 ميغا بايت كافية لنقل البيانات. نحن لا تحتاج إلى أي شيء آخر - النظام الفرعي تخزين المعلومات والمعالج ببساطة لا يمكن التعامل مع هذا الحمل الثقيل.

مخزن البيانات

ننتقل إلى نقطة مثيرة للاهتمام للغاية - يسمح قارئ البطاقة المدمج للنظام بالتمهيد منه فقط (ما لم تقم بإعادة توجيه أداة تحميل التشغيل ...) ، وهذا في الوضع العادي يحد من اختيار الناقل الرئيسي لبطاقة SD صغيرة. الخبر السار هو أنهم اليوم يمكن أن يكونوا بالفعل بحجم كبير ويعملون بسرعة. على الرغم من وجود أوجه قصور بالفعل - من غير المحتمل أن نرغب في الاحتفاظ بملفات مواقع الويب وقواعد البيانات والتبديل وتسجيل الدخول عليها ، وذلك لتجنب بطء التشغيل وتقليل عمر الناقل. للقيام بذلك ، سيكون لدينا وسائط أخرى على الناقل USB. لن يزيد هذا النهج من أداء النظام فحسب ، بل سيعطي أيضًا ميزة الوحدات النمطية - من السهل استبدال الوسائط بأخرى احتياطية ونسخ الصورة بالكامل احتياطيًا. السؤال هو ما الذي نريد استخدامه بالضبط كوسيط خارجي - قرص SSD أو HDD أو بطاقة ذاكرة سريعة.هنا ، يقرر الجميع بنفسه ، يعتمد الكثير على طبيعة المواقع المستضافة. يجب أن نتذكر أن Raspberry Pi 2 يستخدم معيار USB 2.0 ، الذي يحد من نظام الملفات الفرعي الخاص بنا في سرعة نقل البيانات.

في هذا المثال ، كجهاز خارجي ، سننظر في خيار بطيء نسبيًا للتسجيل - هذا هو قارئ بطاقة USB متصل ببطاقة SD كاملة التنسيق من Lexar Professional ، والذي يسمح لك بتسجيل البيانات بسرعة تبلغ حوالي 15 ميجابايت / ثانية فقط مع هذا الاتصال. على الرغم من (في الحالة العامة) ، فإن سرعات الوسائط التي تزيد عن 100 ميغابت للقراءة والكتابة لن تكون مهمة بالنسبة لنا ، لأن التواصل مع العالم الخارجي محدود بهذا الرقم. عند استخدام الأنظمة الفرعية للقرص ، يجب أن تفكر في استهلاكها للطاقة. تستهلك Winchester 2.5 "~ 5 واط وستحتاج على الأرجح إلى مصدر طاقة منفصل. يجب عليك أيضًا أن تتذكر التنظيم المحدد لمدخلات Raspberry عبر USB ، من الواضح أن لدينا اختناق آخر:

مخطط كتلة وظيفية لنموذج Raspberry Pi 2 نموذج B

لذا ، فإن وسائط الاختبار:

" داخلي ": MicoSD فئة 8 جيجابايت 10
خارجي: SD 32Gb class 10+ (UHS)

تركيب وتكوين LAMP


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

نظام التشغيل

يتم تثبيت Minibian على الوسائط "الداخلية" من الصورة 2015-02-18-wheezy-minibian.img.

هذا هو Debian 7.8 كحد أدنى لـ Raspberry. نقوم بالحجز ، في المستودع القياسي يتوقعون PHP لا يزيد عن 5.5 و Apache لا يزيد عن 2.2. هذا ليس تقييدًا مزعجًا ، ولكن من المفيد في هذه المقالة التحقق من إمكانية استخدام أحدث الإصدارات. لتثبيت PHP 5.6.x و Apache 2.4.x ، والتي لم يتم تضمينها في المستودع القياسي ، اضطررت إلى تغيير مصدر الإصدار 8 من Raspbian ، بدأ النظام بعد ترقية apt-get في الحصول على الإصدار 8.0.

اباتشي

الإصدار 2.4.10 (Raspbian). تم تمكين Gzip ، يتم توصيل جميع الوحدات الأكثر استخدامًا من التوزيع القياسي ، بما في ذلك mod_rewrite ، mod_cache ... ، دون حساب تلك التي تم تمكينها افتراضيًا.

بي أتش بي

5.6.12-0 + deb8u1 (CLI). يعمل في أباتشي كما بريورك. هناك مكتبات php-curl و php-gd وغيرها من المكتبات الشعبية.

MySQL

5.5.44-0 + deb8u1 - (Raspbian).

Nginx

Nginx / 1.6.2. Nginx مسؤولة عن الإحصائيات. يتم تضمين ضغط Gzip.

دعني أذكرك بأن جميع السجلات مكتوبة على وسائط خارجية ، وقاعدة بيانات MySQL موجودة ، ولم يتم تعطيل المبادلة ، ولكنها فارغة طوال فترة الاختبار.

كأدوات مساعدة أستخدم PhpMyAdmin و htop و iostat و webmin. تم تثبيت Exim4 ، ولكن فقط لإرسال الرسائل من النماذج. كما ترون ، خادمنا حديث للغاية وعملي. سأخيب آمال محبي لوحة التحكم VESTA - لسوء الحظ ، فإن الشركة المصنعة لا تدعم معالجات ARM ولن تفعل ذلك في المستقبل القريب. لذلك webmin.

اختبارات


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

لا تعتمد مواقع الويب التي تم اختبارها على أي نظام إدارة محتوى ، ولكنها تستخدم عرض الصور من قاعدة البيانات على صفحات ديناميكية (PHP) ، لذلك يمكن أن يكون هناك حمل مكثف للغاية على MySQL. ولكن لا توجد اتصالات AJAX على الإطلاق. نظرًا لأن استضافتنا لا تدعي أنها احترافية بعد ، يعتبر كافياً للاختبار أن يضع 16 موقعًا نشطًا بها حركة مرور منخفضة ، منها خمسة حوالي 100-200 شخص في اليوم ، والباقي لا يزيد عن 50 زائرًا لنفس زمن. في المجموع - حوالي 800-900 شخص في اليوم ، وهو أمر مشابه من حيث الحمل المقبول مع الاستضافة المشتركة غير المكلفة. يقع نصف الزائرين في المساء ، وتتم الزيارات الرئيسية في 20-22 ساعة (~ 300 شخص في ساعتين ، بمتوسط ​​4 مشاهدات = 10 مشاهدات في الدقيقة عند ~ 700 كيلوبايت لكل منها = 116 كيلوبايت من حركة المرور في الثانية).سنخصص "ساعة الذروة" هذه المرة وفي نفس الوقت سنجري الاختبار. لن يكون هناك سوى نوعين من الاختبارات - تقييم الأداء باستخدام خدمات الطرف الثالث وتقرير عن أدوات مساعدة من itopat على العمل الحقيقي.

1. وقت إنشاء وتحميل المستخدم للصفحات في "ساعات الذروة"

نستخدم معلمتين رئيسيتين فقط - وقت إنشاء الصفحة ووقت تحميل الصفحة ، لنوعين من الصفحات - "ثقيل" (ثقيل للمعالج ، لأن هناك الكثير من الصور من MySQL ، جيل طويل) و "خفيف" (صفحة PHP ديناميكية عادية). سنكرر كل اختبار 10 مرات لتقليل احتمالية حدوث نتيجة عشوائية ، وسنستخدم أيضًا خدمات مختلفة.

اسمحوا لي أن أذكركم بجغرافيا خوادم الاختبار وبأحمال العمل المحتملة الخاصة بهم. لذلك ، يمكن أن تختلف النتائج المطلقة بشكل كبير ، وهذا أمر طبيعي. لقد أجريت قياسات متكررة مع انقطاع 5-10 دقائق من أجل الدخول في أوقات تحميل مختلفة للخدمات. قناة التوت المختبرة هي بصريات جيجابت ، الجغرافيا هي سيبيريا ، 150 ميغابت مضمونة لموسكو. للتحقق من قدرة الخادم على تقديم العديد من الاتصالات المتزامنة ، تم بدء الاختبار في وقت واحد على مواقع الخدمة التالية:

صفحة خفيفة (547 كيلوبايت ، بدون الوصول إلى MySQL)

PingDom.com ، السويد

وقت تحميل الصفحة (46 طلبًا): الحد الأدنى - 925 مللي ثانية ، الحد الأقصى - 1124 مللي ثانية ، المتوسط ​​- 955 مللي ثانية.

جوجل PageSpeed ​​رؤى

لا توجد شكاوى حول السرعة.

Sitespeed.ru

إجمالي وقت تحميل الصفحة 3.9-4.2 ، متوسط ​​4.0. وقت إنشاء الصفحة من 139 إلى 157 ، بمتوسط ​​145 مللي ثانية. لهذا السبب ليس لدى Google شكاوى - نصل إلى 200 مللي ثانية المسموح بها.

صفحة `ثقيلة` (843 كيلوبايت ، بما في ذلك 38 صورة من 10-15 كيلوبايت من MySQL)

PingDom.com ، السويد

وقت تحميل الصفحة (85 طلبًا): الحد الأدنى - 946 مللي ثانية ، الحد الأقصى - 1001 مللي ثانية ، المتوسط ​​- 973 مللي ثانية.

جوجل PageSpeed ​​رؤى

لا توجد شكاوى حول السرعة.

Sitespeed.ru

إجمالي وقت تحميل الصفحة 5.3-4.2 ، متوسط ​​4.0. وقت إنشاء الصفحة من 158 إلى 169 ، بمعدل 162 مللي ثانية.

2. تقرير فائدة htop

كما هو متوقع ، أظهر Htop أن المستهلك الرئيسي لوقت وحدة المعالجة المركزية هو عمليات الخلية. لقد "أكلوا" 98 دقيقة من اليوم الأخير من وقت المعالج. ما لا يثير الدهشة - كان من المفترض في البداية أن تكون الاستفسارات المتكررة و "الثقيلة" للقاعدة منا. إذا كانت هناك صور في ذاكرة التخزين المؤقت لـ nginx ، فسنحقق مكاسب في الأداء ، ولكن الاختبار مثير للاهتمام لأنه يمثل نموذجًا للحمل المتزايد على MySQL بهامش ، وهو بالمناسبة نموذجي لمعظم CMS.

3. تقرير فائدة iostat

أظهرت هذه الأداة متوسط ​​سرعات القراءة والكتابة على الوسائط:
1. الوسائط "الداخلية" (النظام) - 0.87 كيلو بايت / ثانية متوسط ​​القراءة ، 15.5 كيلو بايت / ثانية متوسط ​​التسجيل (على الأرجح بسبب التخزين المؤقت لـ nginx ، هناك شيء يجب تحسينه في التكوين).
2. الوسائط "الخارجية" (المواقع ، السجلات ، قواعد البيانات) - قراءة 2.4 كيلو بايت / ثانية و 3 كيلو بايت / ثانية الكتابة (كل شيء على ما يرام هنا ، القراءة مخزنة مؤقتًا ، كتابة السجلات).

4. تخصيص وحدة المعالجة المركزية

توزيع وقت وحدة المعالجة المركزية عن طريق htop ، أخذ العينات - بالضبط يومان من العمل (~ 1600 زائر فريد يتم تقديمهم وفقًا لمقاييس Yandex):

mysql 6.8٪
htop 1.8٪
nginx 0.75٪
apache2 <0.3٪

في بقية الوقت تقريبًا ، استراح المعالج.

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

مجموع


أحب زائرنا الافتراضي سرعة خادم الويب على الكمبيوتر الصغير ، على الرغم من وجود زيارات أخرى متزامنة. وبالتالي ، على الرغم من الاختناقات (USB والمعالج) ، لدينا استنتاج واضح للغاية - خادم الويب الكامل على Raspberry Pi 2 model B حقيقي. في كل من البرامج والمعلمات التقنية. استنادًا إلى حجم العمل المنخفض جدًا في الخيار المدروس ، سأفترض أنه سيكون قادرًا على خدمة ما لا يقل عن ألفي زائر إلى متوسط ​​الموقع (المواقع؟) في اليوم.

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

جرب ، جرب ، الحواسيب الصغيرة - إنها ليست رخيصة فقط ، ولكنها هادئة أيضًا ...

Source: https://habr.com/ru/post/ar384209/


All Articles