<p>تستمر ذاكرة SignalR في الازدياد</p>

تم إنشاؤها على ٢ أغسطس ٢٠١٨  ·  6تعليقات  ·  مصدر: SignalR/SignalR

أهلا،

لقد لاحظت أن ذاكرة Signalr في IIS تستمر في الزيادة ولا تنخفض أبدًا حتى عند قطع اتصال المستخدمين. جميع المستخدمين تقريبًا (حوالي 200 مستخدم) متصلون باستخدام مآخذ ويب.


Asp.net.SignalR.Client.dll - 2.2.3
Asp.net.SignalR.Core.dll - 2.2.3
Asp.net.SignalR.SystemWeb.dll - 2.2.3

الإعداد: خادم واحد ، تجمع تطبيقات مخصص لتطبيق Signalr WCF
O / S: Windows 2012 R2
الخادم: Ec2 T2XLarge (4 vCPU ، ذاكرة 16 جيجابايت)
الذاكرة الخالية المتوفرة:> 50٪


يرجى الرجوع إلى استهلاك ذاكرة IIS المأخوذ للتطبيق.

يعتبر،
رجا

20180730-1.xlsx

more-info-needed

التعليق الأكثر فائدة

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

هل تواجه مشكلات أداء معينة تُعزى مباشرة إلى استخدام الذاكرة هذا؟ يجب أن يستخدم SignalR أيضًا مراجع ضعيفة لضمان تحرير هذه الذاكرة عندما يحتاج مجمع القمامة إلى مساحة إضافية. هل يمكنك تقديم معلومات عن الإخفاقات التي تراها؟

ال 6 كومينتر

أي تحديث عن سبب حدوث ذلك؟

نفس المشكلة هنا

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

هل تواجه مشكلات أداء معينة تُعزى مباشرة إلى استخدام الذاكرة هذا؟ يجب أن يستخدم SignalR أيضًا مراجع ضعيفة لضمان تحرير هذه الذاكرة عندما يحتاج مجمع القمامة إلى مساحة إضافية. هل يمكنك تقديم معلومات عن الإخفاقات التي تراها؟

من المحتمل # 3850.

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

إغلاق هذا لأننا لم نسمع أي تحديثات حول الكائنات التي لا تزال على قيد الحياة. لا تتردد في التعليق أكثر إذا كان لديك سؤال. يمكننا دائمًا إعادة فتح هذا إذا كانت هناك مشكلة يجب حلها!

ما زلت أعتقد أن هذا خطأ فادح وأنه لا ينبغي إغلاق هذه المشكلة. إنه تسرب كبير للذاكرة يمكن أن يستهلك بسهولة الكثير من الذاكرة ويعطل أحد التطبيقات بسبب OutOfMemoryException . خاصة وأن القيمة الافتراضية لـ DefaultMessageBufferSize هي 1000 رسالة لكل Hub . في الوقت الحالي ، أنا أعاني من ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات