@sentry/browser
@sentry/node
raven-js
raven-node
_(ノードのレイヴン)_5.5.0
#1762がクローズされてから新しい問題を作成しています。
@ sentry / nodeに小さなメモリリークがあります。 長い文字列を使用してsetTag
を呼び出すと、はるかに大きくなります。
これは、メモリリークであるだけでなく、DOドロップレットメトリックによると、サーバーを再起動することによってのみ修正できるCPU使用率と帯域幅パブリックの永続的な増加を引き起こすため、識別可能です。
Picは、 setTag
を追加したとき(7月11日)と削除したとき(8月9日)に何が起こるかを示しています。
このための再現ケースを提供できますか? setTag
を複数の同時リクエストで使用すると、メモリフットプリントが確実に増加しますが、スコープがGCされると、メモリはベースラインまで低下するはずです。
@kamilogorek問題のあるコードはここにあります: https :
見た目からすると、スコープはGCされていません。
人気がないかもしれませんが、私が本当に望んでいるのは、例外と変数を受け取るクリーンなAPI呼び出しだけです。 例: Sentry.captureExpection(error, {tags: {foo: 1}})
。 これにより、スコープと関連するメモリリークが解消されます。
ライフサイクルの最後にwithScope
がpopScope
操作を実行して、内部配列からレイヤーを削除します。したがって、このレイヤーへの強い参照はありません。GCが自動的に処理します。
fwfwあなたはあなたの呼び出しを次のように変更することができます:
Sentry.withScope((scope) => {
scope.setUser(user)
scope.setTags(tags)
Sentry.captureException(error)
});
最も参考になるコメント
@kamilogorek問題のあるコードはここにあります: https :
見た目からすると、スコープはGCされていません。
人気がないかもしれませんが、私が本当に望んでいるのは、例外と変数を受け取るクリーンなAPI呼び出しだけです。 例:
Sentry.captureExpection(error, {tags: {foo: 1}})
。 これにより、スコープと関連するメモリリークが解消されます。