Sentry-javascript: Π£Ρ‚Π΅Ρ‡ΠΊΠ° памяти withScope, ΠΎΡ‡Π΅Π½ΡŒ очСвидная ΠΏΡ€ΠΈ использовании scope.setTag Π² @ sentry / node

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 12 Π°Π²Π³. 2019  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: getsentry/sentry-javascript

ΠŸΠ°ΠΊΠ΅Ρ‚ + ВСрсия

  • [] @sentry/browser
  • [x] @sentry/node
  • [] raven-js
  • [] raven-node _ (Π²ΠΎΡ€ΠΎΠ½ вмСсто ΡƒΠ·Π»Π°) _
  • [ ] Π”Ρ€ΡƒΠ³ΠΈΠ΅:

ВСрсия:

5.5.0

ОписаниС

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ выпуска с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° закрытия # 1762.
Π’ @ sentry / node Π΅ΡΡ‚ΡŒ нСбольшая ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти. Π’Ρ‹Π·ΠΎΠ² setTag с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС.
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти, Π½ΠΎ, согласно ΠΌΠΎΠΈΠΌ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌ DO dropt, это Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ постоянноС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ использования ЦП ΠΈ общСдоступной полосы пропускания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚Π΅ΠΌ пСрСзапуска сСрвСра.
На рис. Показано, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° я добавляю setTag (11 июля) ΠΈ ΠΊΠΎΠ³Π΄Π° ΡƒΠ΄Π°Π»ΡΡŽ Π΅Π³ΠΎ (9 августа).
System memory (1)

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@kamilogorek ΠΊΠΎΠ΄ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ находится здСсь: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35

Будя ΠΏΠΎ всСму, ΠΏΡ€ΠΈΡ†Π΅Π» Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ GC'd.

это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпопулярно, Π½ΠΎ всС, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ, это чистый Π²Ρ‹Π·ΠΎΠ² API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Sentry.captureExpection(error, {tags: {foo: 1}}) . это ΠΈΠ·Π±Π°Π²ΠΈΡ‚ ΠΎΡ‚ осциллографов ΠΈ связанных с Π½ΠΈΠΌΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти.

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для этого? setTag с нСсколькими ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ запросами навСрняка ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ объСм памяти, Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости GC'd, объСм памяти Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΏΠ°ΡΡ‚ΡŒ Π΄ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня.

@kamilogorek ΠΊΠΎΠ΄ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ находится здСсь: https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35

Будя ΠΏΠΎ всСму, ΠΏΡ€ΠΈΡ†Π΅Π» Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ GC'd.

это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпопулярно, Π½ΠΎ всС, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ, это чистый Π²Ρ‹Π·ΠΎΠ² API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Sentry.captureExpection(error, {tags: {foo: 1}}) . это ΠΈΠ·Π±Π°Π²ΠΈΡ‚ ΠΎΡ‚ осциллографов ΠΈ связанных с Π½ΠΈΠΌΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти.

withScope Π² ΠΊΠΎΠ½Ρ†Π΅ своСго ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ popScope которая избавляСт слой ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива, поэтому Π½Π΅Ρ‚ сильной ссылки Π½Π° Π½Π΅Π³ΠΎ - GC позаботится ΠΎΠ± этом автоматичСски.
fwfw Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свой Π²Ρ‹Π·ΠΎΠ² Π½Π°:

Sentry.withScope((scope) => {
  scope.setUser(user)
  scope.setTags(tags)
  Sentry.captureException(error)
});
Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ