@sentry/browser
@sentry/node
raven-js
raven-node
_(gagak untuk simpul)_5.5.0
Membuat masalah baru sejak #1762 ditutup.
Ada kebocoran memori kecil di @sentry/node. Memanggil setTag
dengan beberapa string panjang membuatnya jauh lebih besar.
Ini dapat diidentifikasi karena bukan hanya kebocoran memori, tetapi menurut metrik droplet DO saya, ini menyebabkan peningkatan permanen dalam penggunaan CPU & Bandwidth publik yang hanya dapat diperbaiki dengan me-restart server.
Pic menunjukkan apa yang terjadi ketika saya menambahkan setTag
(11 Juli) dan ketika saya menghapusnya (9 Agustus).
Apakah Anda dapat memberikan beberapa kasus repro untuk ini? setTag
dengan beberapa permintaan bersamaan pasti akan meningkatkan jejak memori, tetapi setelah cakupan GC, memori harus turun ke garis dasar.
@kamilogorek kode yang menyinggung ada di sini: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
dari kelihatannya, ruang lingkupnya tidak mendapatkan GC.
ini mungkin tidak populer, tetapi yang saya inginkan hanyalah panggilan API bersih yang menggunakan pengecualian & variabel. misalnya Sentry.captureExpection(error, {tags: {foo: 1}})
. yang akan menghilangkan cakupan & kebocoran memori terkait.
withScope
di akhir siklus hidupnya melakukan operasi popScope
yang menghilangkan lapisan dari larik internal, sehingga tidak ada referensi yang kuat untuk itu - GC menanganinya secara otomatis.
fwfw Anda dapat mengubah panggilan Anda ke:
Sentry.withScope((scope) => {
scope.setUser(user)
scope.setTags(tags)
Sentry.captureException(error)
});
Komentar yang paling membantu
@kamilogorek kode yang menyinggung ada di sini: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
dari kelihatannya, ruang lingkupnya tidak mendapatkan GC.
ini mungkin tidak populer, tetapi yang saya inginkan hanyalah panggilan API bersih yang menggunakan pengecualian & variabel. misalnya
Sentry.captureExpection(error, {tags: {foo: 1}})
. yang akan menghilangkan cakupan & kebocoran memori terkait.