@sentry/browser
@sentry/node
raven-js
raven-node
_ (cuervo por nodo) _5.5.0
Creando una nueva edición desde que se cerró # 1762.
Existe una pequeña pérdida de memoria en @ sentry / node. Llamar a setTag
con algunas cadenas largas lo hace mucho más grande.
Esto es identificable porque no es solo una pérdida de memoria, sino que, de acuerdo con mis métricas de gotas de DO, provoca un aumento permanente en el uso de la CPU y el ancho de banda público que solo se puede solucionar reiniciando el servidor.
La imagen muestra lo que sucede cuando agregué setTag
(11 de julio) y cuando lo eliminé (9 de agosto).
¿Puede proporcionar algún caso de reproducción para esto? setTag
con múltiples solicitudes simultáneas seguramente aumentará la huella de memoria, pero una vez que un alcance es GC, la memoria debería caer a la línea de base.
@kamilogorek, el código ofensivo está aquí: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
por lo que parece, el alcance no está recibiendo GC.
puede ser impopular, pero todo lo que realmente quiero es una llamada API limpia que tome una excepción y variables. por ejemplo, Sentry.captureExpection(error, {tags: {foo: 1}})
. eso eliminaría los ámbitos y las pérdidas de memoria asociadas.
withScope
al final de su ciclo de vida realiza una operación popScope
que elimina la capa de la matriz interna, por lo que no hay una referencia sólida a ella: GC se encarga de ello automáticamente.
fwfw puede cambiar su llamada a:
Sentry.withScope((scope) => {
scope.setUser(user)
scope.setTags(tags)
Sentry.captureException(error)
});
Comentario más útil
@kamilogorek, el código ofensivo está aquí: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
por lo que parece, el alcance no está recibiendo GC.
puede ser impopular, pero todo lo que realmente quiero es una llamada API limpia que tome una excepción y variables. por ejemplo,
Sentry.captureExpection(error, {tags: {foo: 1}})
. eso eliminaría los ámbitos y las pérdidas de memoria asociadas.