سؤال

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

هل يمكن إنشاء تجمع مؤشرات ترابط مخصص وتعيينه لهذا servlet للتعامل مع هذا السيناريو؟نحن نستخدم خادم WebLogic 9.2.أم أن هناك أي نهج آخر أفضل للقيام بذلك؟نقدر أي أفكار.

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

المحلول

<اقتباس فقرة>   

ويمكن إنشاء تجمع موضوع مخصص وتعيين لهذا بريمج للتعامل مع هذا السيناريو؟ نحن نستخدم خدمة ويب لوجيك 9.2. أو هل هناك أي طريقة أفضل آخرين للقيام بذلك؟ نقدر أية أفكار.

نعم، هذا ممكن. بدلا من استخدام الافتراضي (بدءا يبلوغيتش 9.x من، تنفيذ طوابير يتم استبدال مدراء العمل لحمامات السباحة موضوع <سوب> 1 )، يمكنك إنشاء مدير العمل مع محددة <لأ href = "HTTP: // تحميل .oracle.com / مستندات / مؤتمر نزع السلاح / E13222_01 / ولس / docs100 / config_wls / self_tuned.html # wp1064810 "يختلط =" نوفولو noreferrer "> القيود مثل max-threads-constraint وربما capacity. يمكنك بعد ذلك تعيين بريمج لمدير عمل محددة باستخدام في WL-إيفاد لسياسة الملف weblogic.xml نشر واصف.


<سوب> 1 لاحظ أنه لا يزال من الممكن أن <لأ href = "http://download.oracle.com/docs/cd/E13222_01/wls/docs100/config_wls/self_tuned.html#wp1070890" يختلط = "نوفولو noreferrer"> تمكين يبلوغيتش 8.1 الموضوع بركة النموذجية واستخدام تنفيذ قوائم الانتظار.

نصائح أخرى

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

ربما تحتاج إلى موازن تحميل سواء كان برنامجًا أو جهازًا وفقًا لمتطلباتك المستهدفة.يمكن أن يكون موازن تحميل البرنامج مجرد "خادم مرسل" مع التحكم في الجلسة (على سبيل المثال.10 متزامنة مع servlet X).

هناك احتمال آخر:يمكنك "خنق" مقدمي الطلبات عن طريق إصدار رمز HTTP المناسب.بالطبع، هذا يعني منطقًا إضافيًا من جانب الطالب ...وما زال يستهلك بعض الموارد على جانب الخادم.

هل يمكن تحميل التوازن بحيث هناك خادم ثانوي الذي يعالج جميع طلبات بريمج مكلفة.

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

وهكذا، كنت أنتقل بريمج الحالي الخاص بك إلى استدعاء الأسلوب.

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

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

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

بدون استخدام موازنات التحميل وما إلى ذلك، يبدو لي أنك تريد فصل الطلب عن المعالجة.

على سبيل المثال

  1. يرسل المتصفح طلبًا.يأخذها servlet، ويضعها في قائمة الانتظار ويعيد التذكرة.
  2. سيعمل servlet على طلب العمل هذا حسب ما تسمح به الموارد (باستخدام تجمع مؤشرات ترابط منفصل يسحب عناصر العمل من قائمة الانتظار).
  3. يمكن للمتصفح التحديث (إعادة GET) باستخدام تلك التذكرة، وسيقوم servlet بإرجاع النتيجة المناسبة (على سبيل المثال.لا معالجة، معالجة، معالجة).

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

وأنا أحب فكرة استخدام مكافحة ساكنة وإعادة توجيه لإظهار رسالة خطأ عندما وصلت العداد إلى أبعد من الحد المسموح به.

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

http://download.oracle.com /docs/cd/E13222_01/wls/docs92/perform/appb_queues.html

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