كيف أقوم بإجراء طلبات HTTP في القضبان أثناء قيامه بخدمة العديد من الطلبات في الدقيقة؟

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

سؤال

أحاول توسيع نطاق خادم التطبيق لمعالجة أكثر من 20،000 طلب في الدقيقة.

عندما أختبر الطلبات، فإن معظم الطلبات تعالج بسهولة 20،000 دورة في الدقيقة أو أكثر.

ولكن، تطلب طلبات الحاجة إلى تقديم طلب HTTP خارجي (على سبيل المثال، تسجيل دخول Facebook) الخادم وصولا إلى الزحف (3000 دورة في الدقيقة).

أنا أفهم من الناحية النظرية قيود بيئتي الحالية - 3 خوادم التحميل المتوازن مع 4 عمال يونيكورن لكل خادم يمكن فقط التعامل مع 12 طلبات في وقت واحد، حتى لو كان كل منهم ينتظرون طلبات HTTP.

ما هي خياراتي لتحجيم هذا أفضل؟ أود التعامل مع العديد من الاتصالات في وقت واحد.

الحلول الممكنة كما أفهمها:

  1. القوة الغاشمة: استخدم المزيد من عمال يونيكورن (أي مزيد من ذاكرة الوصول العشوائي) والمزيد من الخوادم.

  2. ادفع جميع عمليات الحظر إلى عمليات الخلفية / العامل لتحرير عمليات الويب. سيحتاج العملاء إلى الاستطلاع بشكل دوري للعثور على وقت اكتمال طلبهم.

  3. الانتقال إلى puma بدلا من يونيكورن (وربما إلى روبينيوس من التصوير بالرنين المغناطيسي)، حتى أتمكن من استخدام الخيوط بدلا من العمليات - التي قد (؟) تحسين استخدام الذاكرة لكل اتصال، وبالتالي السماح لعدد زيادة العمال.

  4. بشكل أساسي، ما أبحث عنه هو: هل هناك طريقة أفضل لزيادة عدد الطلبات المحظورة / قائمة الانتظار يمكن أن يتعامل عامل واحد بحيث يمكنني زيادة عدد الاتصالات لكل خادم؟

    على سبيل المثال، سمعت مناقشة باستخدام رقيقة مع EventMachine. هل هذا يفتح إمكانية عامل القضبان يمكنه إخماد طلب الويب الذي يعمل حاليا (لأن المرء ينتظر على خادم خارجي) ثم يلتقط طلبا آخر أثناء انتظاره؟ إذا كان الأمر كذلك، فهل هذا وسيلة جديرة بالاهتمام لمتابعة الأداء مقارنة مع Unicorn و Puma؟ (هل تعتمد بشدة على أنشطة وقت التشغيل للتطبيق؟)

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

المحلول

unicorn هو خادم تطبيق متزامن متعدد الخيوط متعدد الألوان.انها ليست مباراة جيدة لهذا النوع من المعالجة.

يبدو مثل التطبيق الخاص بك هو I / o ملزمة.هذا يجادل لخفي الموجهة نحو الأحداث لمعالجة طلباتك.

أوصي بمحاولة حدث EventMachine و EM-HTTP-SECTERN و EM-HTTP-Server .

سيسمح لك ذلك بخدمة كل من الطلبات الواردة إلى خادم HTTP وخدمة HTTP الصادرة مكالمات غير متزامنة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top