@sentry/browser
@sentry/node
raven-js
raven-node
_ (غراب للعقدة) _5.5.0
إنشاء عدد جديد منذ أن تم إغلاق # 1762.
يوجد تسرب صغير للذاكرة في @ sentry / node. استدعاء setTag
مع بعض السلاسل الطويلة يجعله أكبر بكثير.
يمكن تحديد هذا لأنه ليس فقط تسربًا للذاكرة ، ولكن وفقًا لمقاييس DO الخاصة بي ، فإنه يتسبب في زيادة دائمة في استخدام وحدة المعالجة المركزية وعرض النطاق الترددي العام الذي لا يمكن إصلاحه إلا عن طريق إعادة تشغيل الخادم.
تُظهر الصورة ما يحدث عندما أضفت setTag
(11 يوليو) وعندما أزلته (9 أغسطس).
هل أنت قادر على تقديم بعض الحالات المصاحبة لذلك؟ سيؤدي setTag
مع الطلبات المتزامنة المتعددة بالتأكيد إلى زيادة مساحة الذاكرة ، ولكن بمجرد أن يكون النطاق هو GC ، يجب أن تنخفض الذاكرة إلى خط الأساس.
kamilogorek الرمز المخالف هنا: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
من نظراته ، فإن النطاق لا يحصل على GC.
قد لا تحظى بشعبية ، ولكن كل ما أريده حقًا هو استدعاء واجهة برمجة تطبيقات نظيف يأخذ استثناءات ومتغيرات. على سبيل المثال ، Sentry.captureExpection(error, {tags: {foo: 1}})
. من شأنه التخلص من النطاقات وتسريبات الذاكرة المرتبطة بها.
ينفذ withScope
في نهاية دورة حياته عملية popScope
التي تتخلص من الطبقة من المصفوفة الداخلية ، وبالتالي لا يوجد مرجع قوي لها - يعتني GC بها تلقائيًا.
fwfw يمكنك تغيير مكالمتك إلى:
Sentry.withScope((scope) => {
scope.setUser(user)
scope.setTags(tags)
Sentry.captureException(error)
});
التعليق الأكثر فائدة
kamilogorek الرمز المخالف هنا: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
من نظراته ، فإن النطاق لا يحصل على GC.
قد لا تحظى بشعبية ، ولكن كل ما أريده حقًا هو استدعاء واجهة برمجة تطبيقات نظيف يأخذ استثناءات ومتغيرات. على سبيل المثال ،
Sentry.captureExpection(error, {tags: {foo: 1}})
. من شأنه التخلص من النطاقات وتسريبات الذاكرة المرتبطة بها.