@sentry/browser
@sentry/node
raven-js
raven-node
_ (raven para o nó) _5.5.0
Criando um novo problema desde o fechamento do nº 1762.
Existe um pequeno vazamento de memória em @ sentry / node. Chamar setTag
com algumas strings longas torna-o muito maior.
Isso é identificável porque não é apenas um vazamento de memória, mas de acordo com minhas métricas de droplet DO, causa um aumento permanente no uso da CPU e largura de banda pública que só pode ser corrigido reiniciando o servidor.
A foto mostra o que acontece quando adicionei setTag
(11 de julho) e quando o removi (9 de agosto).
Você pode fornecer algum caso de reprodução para isso? setTag
com várias solicitações simultâneas certamente aumentará a área de cobertura da memória, mas uma vez que um escopo é GC, a memória deve cair para a linha de base.
@kamilogorek o código ofensivo está aqui: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
pelo que parece, o osciloscópio não está recebendo GC.
pode ser impopular, mas tudo que eu realmente quero é uma chamada de API limpa que tenha uma exceção e variáveis. por exemplo, Sentry.captureExpection(error, {tags: {foo: 1}})
. isso eliminaria os escopos e vazamentos de memória associados.
withScope
no final de seu ciclo de vida executa uma operação popScope
que remove a camada do array interno, portanto, não há nenhuma referência forte a ela - o GC cuida disso automaticamente.
fwfw você pode mudar sua chamada para:
Sentry.withScope((scope) => {
scope.setUser(user)
scope.setTags(tags)
Sentry.captureException(error)
});
Comentários muito úteis
@kamilogorek o código ofensivo está aqui: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35
pelo que parece, o osciloscópio não está recebendo GC.
pode ser impopular, mas tudo que eu realmente quero é uma chamada de API limpa que tenha uma exceção e variáveis. por exemplo,
Sentry.captureExpection(error, {tags: {foo: 1}})
. isso eliminaria os escopos e vazamentos de memória associados.