• EnglishEspaΓ±olζ—₯本θͺžν•œκ΅­μ–΄PortuguΓͺs
  • λ‘œκ·ΈμΈμ§€κΈˆ μ‹œμž‘ν•˜κΈ°

이 ν•œκΈ€ λ¬Έμ„œλŠ” μ‚¬μš©μžμ˜ 편의λ₯Ό μœ„ν•΄ 기계 λ²ˆμ—­λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

영문본과 λ²ˆμ—­λ³Έμ΄ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 경우 영문본이 μš°μ„ ν•©λ‹ˆλ‹€. 보닀 μžμ„Έν•œ λ‚΄μš©μ€ 이 νŽ˜μ΄μ§€λ₯Ό λ°©λ¬Έν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

문제 μ‹ κ³ 

createTracer (SPA API)

톡사둠

newrelic.interaction().createTracer(string $name[, function $callback])

λŒ€κΈ° μ‹œκ°„ 및 JS μ‹€ν–‰ μ‹œκ°„μ„ ν¬ν•¨ν•˜μ—¬ SPA μƒν˜Έ μž‘μš©μ˜ ν•˜μœ„ ꡬ성 μš”μ†Œλ₯Ό λ³„λ„λ‘œ κ³„μ‚°ν•©λ‹ˆλ‹€.

μš”κ΅¬ 사항

μ„€λͺ…

이 방법은 λΈŒλΌμš°μ €μ—μ„œ κ°œλ³„μ μœΌλ‘œ SPA μƒν˜Έ μž‘μš©μ˜ ν•˜μœ„ ꡬ성 μš”μ†Œ μ‹œκ°„μ„ μΈ‘μ •ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. 각 ν•˜μœ„ ꡬ성 μš”μ†ŒλŠ” λ‹€μŒμ„ μΈ‘μ •ν•©λ‹ˆλ‹€.

  • 콜백이 싀행될 λ•ŒκΉŒμ§€ λŒ€κΈ° μ‹œκ°„
  • 호좜된 콜백의 JS μ‹€ν–‰ μ‹œκ°„

이 λ©”μ„œλ“œλŠ” κ³„μΈ‘λ˜μ§€ μ•Šμ€ 비동기 λ©”μ„œλ“œμ— μ˜ν•΄ μƒμ„±λœ 비동기 갭을 μ—°κ²°ν•˜λŠ” 데에도 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ μƒν˜Έμž‘μš©μ΄ μ €μž₯되면 New Relic이 BrowserTiming 이벀트 λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

createTracer() λ©”μ„œλ“œλŠ” μ½”λ“œμ—μ„œ ν˜ΈμΆœν•΄μ•Ό ν•˜λŠ” λž˜ν•‘λœ 콜백 λ©”μ„œλ“œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. λ°˜ν™˜λœ λž˜ν•‘λœ μ½œλ°±μ€ 호좜될 λ•Œ μ„Έ 가지 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

  1. μ‚¬μš©μž 지정 좔적 ν”„λ‘œκ·Έλž¨μ˜ 비동기 λΆ€λΆ„μ˜ 끝을 κΈ°λ‘ν•©λ‹ˆλ‹€.
  2. λ™μΌν•œ 인수 및 μ»¨ν…μŠ€νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ createTracer() 에 μ „λ‹¬λœ μ›λž˜ μ½œλ°±μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.
  3. μ›λž˜ 콜백의 μ‹€ν–‰ νšŸμˆ˜μž…λ‹ˆλ‹€.

createTracer() }을 μ‹€ν–‰ν•˜λŠ” BrowserInteraction 은 BrowserTiming 이벀트 λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. 콜백 쀑에 μƒμ„±λœ λͺ¨λ“  μƒˆλ‘œμš΄ XHR λ˜λŠ” μ‚¬μš©μž 지정 좔적은 μƒν˜Έ μž‘μš©μ˜ μΌλΆ€λ‘œ ν¬ν•¨λ©λ‹ˆλ‹€.

λͺ¨λ“  좔적 ν”„λ‘œκ·Έλž¨μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ μƒν˜Έ μž‘μš©μ΄ μ™„λ£Œλœ κ²ƒμœΌλ‘œ κ°„μ£Όλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 μΆ”μ μžκ°€ λΈŒλΌμš°μ € μ—μ΄μ „νŠΈκ°€ 기본적으둜 μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ” 비동기 κΈ°λŠ₯을 λž˜ν•‘ν•  수 있게 ν•΄μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜

λ§€κ°œλ³€μˆ˜

μ„€λͺ…

$name

끈

ν•„μˆ˜μ˜. 이것은 μΆ”μ μžμ˜ μ΄λ¦„μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

이름을 ν¬ν•¨ν•˜μ§€ μ•ŠμœΌλ©΄ λΈŒλΌμš°μ €λŠ” μƒν˜Έ μž‘μš© νŠΈλ¦¬μ— λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 콜백 μ‹œκ°„μ€ μƒμœ„ λ…Έλ“œμ— κΈ°μΈν•©λ‹ˆλ‹€.

$callback

κΈ°λŠ₯

선택 κ³Όλͺ©. 비동기 μž‘μ—…μ΄ 끝날 λ•Œ μ‹€ν–‰ν•  동기 μž‘μ—…μ΄ ν¬ν•¨λœ μ½œλ°±μž…λ‹ˆλ‹€. 이 μ½œλ°±μ„ μ‹€ν–‰ν•˜λ €λ©΄ createTracer() 을 μ‚¬μš©ν•˜μ—¬ λ°˜ν™˜λœ 래퍼 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ„Έμš”.

λ°˜ν™˜ κ°’

μ›λž˜ μ½œλ°±μ„ λž˜ν•‘ν•˜λŠ” λ©”μ„œλ“œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 λ©”μ„œλ“œκ°€ 호좜되면 μ›λž˜ μ½œλ°±μ„ ν˜ΈμΆœν•˜κ³  비동기 타이밍을 μ’…λ£Œν•©λ‹ˆλ‹€.

예

μΆ”μ μž 생성

λ‹¨μˆœνžˆ νŠΉμ • μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜ ν˜ΈμΆœμ— κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μΈ‘μ •ν•˜λ €λŠ” 경우 ν•¨μˆ˜λ₯Ό 콜백으둜 createTracer() 에 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λ°˜ν™˜λœ 래퍼 콜백이 μ¦‰μ‹œ ν˜ΈμΆœλ©λ‹ˆλ‹€.

newrelic
.interaction()
.createTracer('customSegment', function myCallback () {
// ... do your work ...
})();

이 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ κ²°κ³Ό μ‚¬μš©μž 지정 μΆ”μ κΈ°λŠ” λ¬΄μ‹œν•  수 μžˆλŠ” 비동기 λŒ€κΈ° 지속 μ‹œκ°„κ³Ό myCallback() 의 μ‹€ν–‰ μ‹œκ°„κ³Ό λ™μΌν•œ 동기 지속 μ‹œκ°„μ„ κ°–μŠ΅λ‹ˆλ‹€.

κ³„μΈ‘λ˜μ§€ μ•Šμ€ 비동기 API 좔적

기본적으둜 λΈŒλΌμš°μ € μ—μ΄μ „νŠΈλŠ” κ°€μž₯ 일반적인 비동기 ν•¨μˆ˜(예: setTimeout() )λ₯Ό λž˜ν•‘ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μžλ™μœΌλ‘œ μ²˜λ¦¬λ˜μ§€ μ•ŠλŠ” 일뢀 κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€(예: requestAnimationFrame() ). λ˜ν•œ 인과 관계λ₯Ό μ‰½κ²Œ κ²°μ •ν•  수 μ—†λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€(예: μ›Ή μ†ŒμΌ“μ„ ν†΅ν•œ μ‚¬μš©μž 지정 RPC κ΅¬ν˜„). μ΄λŸ¬ν•œ 경우 createTracer() λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ κ³„μΈ‘λ˜μ§€ μ•Šμ€ ν•¨μˆ˜μ— λŒ€ν•œ 콜백이 μƒν˜Έμž‘μš©μ˜ μΌλΆ€λ‘œ κ°„μ£Όλ˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

setTimeout() , setImmediate() , Promise() , fetch() 및 XMLHttpRequest() 와 같이 λΈŒλΌμš°μ € μ—μ΄μ „νŠΈμ— μ˜ν•΄ 기본적으둜 λž˜ν•‘λœ 비동기 APIλ₯Ό 기반으둜 ν•˜λŠ” 비동기 μ˜ˆμ•½ μ‹œμŠ€ν…œμ—λŠ” createTracer() 을 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ API에 μ˜ν•΄ μƒμ„±λœ 비동기 κ²½κ³„λŠ” λΈŒλΌμš°μ € μ—μ΄μ „νŠΈμ— μ˜ν•΄ μžλ™μœΌλ‘œ μ—°κ²°λ©λ‹ˆλ‹€.

μ•„λž˜ 예제 μ½”λ“œμ—λŠ” μ½œλ°±μ„ μˆ˜λ½ν•˜κ³  미래의 νŠΉμ • μ‹œμ μ—μ„œ λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰ν•˜λŠ” doAsyncWork() ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. doAsyncWork() 을 ν˜ΈμΆœν•œ μ‹œμ κ³Ό 콜백이 μ‹€ν–‰λ˜κΈ° μ‹œμž‘ν•˜λŠ” μ‹œμ  μ‚¬μ΄μ˜ μ‹œκ°„(비동기 λŒ€κΈ° μ‹œκ°„)κ³Ό μ½œλ°±μ„ μ‹€ν–‰ν•˜λŠ” 데 κ±Έλ¦° μ‹œκ°„(동기 콜백 μ‹œκ°„)을 λͺ¨λ‘ μΈ‘μ •ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

var wrappedCallback = newrelic
.interaction()
.createTracer('customSegment', doTheWork);
doAsyncWork(wrappedCallback);
function doTheWork() {
// ... do your work ...
}

λ‹€μŒμ€ 좔적기 타이밍에 λŒ€ν•œ 이벀트 νƒ€μž„λΌμΈμž…λ‹ˆλ‹€.

Copyright Β© 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.