هل يغادر PHP Proc_Nice مواضيع Apache في إعداد أولويات جديد؟

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

سؤال

عند تنفيذ Proc_Nice ()، هل هو في الواقع لطيفة موضوع أباتشي؟

إذا كان الأمر كذلك، وإذا كان المستخدم الحالي (مستخدم غير مستخدم) لا يمكن للتردد على أولويته الأصلية هو قتل مؤشر ترابط Apache المناسب (Apache_child_terminate) على خادم Apache 2.0x؟

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

لقد قمت بالفعل بإعادة كتابة العملية لتكون أكبر من الدفق - المساعدة في استهلاك الذاكرة، لكنني أود أيضا العملية لتشغيل أولوية أقل. ومع ذلك، لا يمكنني ترك خيط Apache بأولوية منخفضة حيث لدينا الكثير من خدمات الويب ذات الأولوية العالية التي تعمل على نفس المربع هذا.

تيا

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

المحلول

في هذا النوع من الموقف، حل إذا غالبا ما لا يفعل هذا النوع من العمل الثقيل داخل عمليات Apache، ولكن إما:

  • قم بتشغيل عملية PHP الخارجية، باستخدام شيء مثل shell_exec, ، على سبيل المثال - هذا إذا كان يجب أن تعمل في وضع متزامن (أي، إذا لم تتمكن من تنفيذ المهمة بضع دقائق لاحقا)
  • ادفع المهمة إلى نظام FIFO، وإرجاع رسالة على الفور إلى المستخدم يقول "سيتم معالجة مهمتك قريبا"
    • ولدي بعض العملية الأخرى (أطلقت عبر Crontab كل دقيقة، على سبيل المثال) تحقق من أن قائمة الانتظار FIFO
    • والقيام بمعالجة ذلك هناك شيء في قائمة الانتظار
    • هذه العملية، نفسها، يمكن أن تعمل في وضع أولوية منخفضة.


في كثير من الأحيان قدر الإمكان، خاصة إذا استغرقت الحسابات الثقيلة بعض الوقت، أود أن أذهب للحل الثاني:

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


اخر (لطيفة المظهر، لكنني لم أحاول ذلك بعد) سيكون الحل استخدام نوع من الأدوات مثل، على سبيل المثال، جيرمان :

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

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