تسرب الذاكرة في WebSphere Portal المتعلقة بوابة محددات

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

  •  21-09-2019
  •  | 
  •  

سؤال

لدي طلب تسرب java بمعدل لائق (400 المستخدمين يترك 25% مجانا بعد 2ساعة...بعد تسجيل الخروج كل الذاكرة المستعادة) و حددنا العناصر مما تسبب في تسرب الذاكرة سلاسل توضع في الدورة التي تظهر أن تكون ولدت من البوابة نفسها.القيم المشفرة بوابة محددات (طويلة جدا endcoded السلاسل ...عادة الحجم حول 19kb) ، مفاتيح يبدو أن سبعة (7) بشكل عشوائي الشخصيات مسبوقة من قبل RES# (على سبيل المثال ، RES#NhhEY37).

لقد تدخلت من خلال التطبيق باستخدام دورة تعقب التقاط قبالة heapdumps مما أدى إلى تحديد أن هناك واحد من هذه الكائنات التي تم إنشاؤها وأضاف أن الدورة في كل صفحة تقريبا ...في الواقع, يبدو أنه في كل صفحة أن تقدم البيانات (وهو معظم صفحات).لذا إما 1:1 مع صفحات عامة أو 1:1 مع النماذج.

وقد أي شخص واجه مشكلة مشابهة مثل هذا ؟ نحن فتح تذكرة مع IBM ، ولكن أردت أن أطرح هذا المجتمع.شكرا مقدما!

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

المحلول 2

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

المسألة بالنسبة لنا حقيقة أننا المطلوبة "أطول من المعتاد" جلسات عمل المستخدم (60+ دقيقة) مع 1000+ المستخدمين المتزامنين ، ونحن تسربت على هذه الحماية الآلية بعد بضع ساعات.

IBM أوصى نحن فقط اغلاق ذاكرة التخزين المؤقت بالكامل باستخدام التالية portlet.xml التكوين الدخول:

wps.multiple.action.execution = true

هذا يسمح مزدوج تقدم ، والتي قد أو قد لا ضرر وظائف الأعمال.ومع ذلك ، فإن الداخلية البوابة إطار الواردة بالفعل آلية لمنع مزدوج تقدم, وهذا ليس مشكلة بالنسبة لنا.

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

wps.multiple.action.cache.bound.enabled = true
wps.multiple.action.cache.key.maxsize = 40
wps.multiple.action.cache.value.maxsize = 10

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

نصائح أخرى

هل يمكن أن يكون ذاكرة التخزين المؤقت للمدخل؟ يمكن أن يكون لديك التخزين المؤقت Servlet المنشط وإعلان وقت انتهاء صلاحية المدخل الطويل. نقلا عن Techjournal:

يمكن للبوبرات الإعلان عن قدرتها على التخزين المؤقت في ذاكرة التخزين المؤقت من خلال تحديد وقت انتهاء الصلاحية في واصفها portlet.xml (انظر مثال واصف المدخل)

<!-Expiration value is in seconds, -1 = no time limit, 0 = deactivated-->
    <expiration-cache>3600</expiration-cache> <!- 1 Hour cache -->

لاستخدام وظائف التخزين المؤقت للشظايا ، يجب تنشيط التخزين المؤقت Servlet في قسم حاوية الويب في وحدة التحكم الإدارية لخادم WebSphere Application (انظر مثال واصف المدخل). يوفر WebSphere Application Server أيضًا تطبيق Enterprise لشاشة Cache (Cachemonitor.ear) ، وهو مفيد جدًا لتصور محتويات ذاكرة التخزين المؤقت للشظايا.

تحديث

هل لديك مدخلات تم تعيينها EXPIRATION_CACHE؟ يقتبس:

تعديل ذاكرة التخزين المؤقت المحلية في وقت التشغيلبالنسبة إلى المدبرات القياسية ، يمكن لنافذة المدخل تعديل وقت انتهاء الصلاحية في وقت التشغيل عن طريق تعيين خاصية Expiration_Cache في RenderResponse ، على النحو التالي:

RenderResponse.setProperty(
    PortletResponse.EXPIRATION_CACHE,
    (new Integer(3000)).toString() );

لاحظ أنه بالنسبة لي ، فإن القيمة غير بديهية بعض الشيء ، -1 يعني عدم انتهاء صلاحيتها ، 0 يعني عدم ذاكرة التخزين المؤقت.

هل يتم تثبيت خادم WebSphere Portal الخاص بك على أحدث حزمة إصلاح؟

http://www-01.ibm.com/support/docview.wss؟uid=swg24024380&rs=0&cs=utf-8&context=sshrkx&dc=d420&loc=en_us&cc=us

كما قد تكون مهتمًا باتباع المناقشة

http://www.ibm.com/developerworks/forums/thread.jspa؟messageid=14427700&tstart=0

تحديث:

مجرد رمي بعض السهام المطوية الأعمى.

  • "الدقة#" بالنسبة لي تبدو مثل الموارد.
  • من تتبع Stack Stack ، يشير "DefaultActionResultManager.storedocument" إلى أنه يخزن المستند.

وبالتالي يبدو أن مواردك (صفحات البوابة التي تم إنشاؤها) يتم تخزينها مؤقتًا. تحقق مما إذا كان هناك بعض paramater يمكن أن lmit حجم ذاكرة التخزين المؤقت للموارد.

أيضا في اختبار آخر تعيين ذاكرة التخزين المؤقت لمدة 5 دقائق بدلاً من ساعة.

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