• /
  • EnglishEspaรฑolFranรงaisๆ—ฅๆœฌ่ชžํ•œ๊ตญ์–ดPortuguรชs
  • ๋กœ๊ทธ์ธ์ง€๊ธˆ ์‹œ์ž‘ํ•˜๊ธฐ

์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ธฐ๊ณ„ ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค.

์˜๋ฌธ๋ณธ๊ณผ ๋ฒˆ์—ญ๋ณธ์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜๋ฌธ๋ณธ์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฌธ์ œ ์‹ ๊ณ 

์š”์ฒญ ๊ณ„์ธก

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด ์™ธ์—๋„ New Relic Ruby ์—์ด์ „ํŠธ๋Š” Resque ์ž‘์—…์„ ๊ณ„์ธกํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ์ธ์ˆ˜ ์บก์ฒ˜

๋ฃจ๋น„ ์—์ด์ „ํŠธ ๋ฒ„์ „ 3.6.9๋ถ€ํ„ฐ, ์„ ํƒ์ ์œผ๋กœ ํ”„๋กœ์„ธ์„œ ํŠธ๋ ˆ์ด์Šค ๋ฐ ํŠธ๋ ˆ์ด์Šค ์˜ค๋ฅ˜์—์„œ Resque ์ž‘์—… ์ธ์ˆ˜๋ฅผ ์บก์ฒ˜ํ•˜๋„๋ก ๋ฃจ๋น„ ์—์ด์ „ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹คํŒจํ•œ ์ž‘์—…์„ ์žฌํ˜„ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ์ธ์ˆ˜์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์€ ๊บผ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์—์ด์ „ํŠธ ๋ฒ„์ „์— ๋งž๊ฒŒ newrelic.yml ํŽธ์ง‘ํ•˜์„ธ์š”.

  • newrelic_rpm 3.12.0 ์ด์ƒ: attributes.include: job.resque.args.*
  • newrelic_rpm 3.6.9 - 3.11.X์˜ ๊ฒฝ์šฐ: resque.capture_params: true

์ด ๊ธฐ๋Šฅ์€ HTTP ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์›น ์š”์ฒญ์— ๋Œ€ํ•œ ํŠธ๋žœ์žญ์…˜ ์ถ”์  ๋ฐ ์ถ”์ ๋œ ์˜ค๋ฅ˜์—์„œ ์บก์ฒ˜๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•˜๋Š” ์ผ๋ฐ˜ capture_params ์ตœ์ƒ์œ„ ์„ค์ •๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ์„ค์ •์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Resque ๋ฒ„์ „ 1.23.1 ์ด์ƒ

Resque 1.23.1 ์ด์ƒ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ New Relic์˜ Resque ๊ณ„์ธก์ด ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜ ์—์ด์ „ํŠธ ์„ค์น˜ ์ ˆ์ฐจ ์™ธ์— ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Exception: ์ด์ „ ๋ฒ„์ „์˜ Resque๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Resque before_first_fork, before_fork ๋˜๋Š” after_fork ํ›„ํฌ์—์„œ NewRelic::Agent ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ด ๋‚จ์•„ ์žˆ๋Š” ๊ฒฝ์šฐ Resque 1.23์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ํ•ด๋‹น ํ˜ธ์ถœ์„ remove ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .1 ์ด์ƒ.

๋Œ€์ฒด ํฌํฌ ๋ชจ๋“œ

resque-multi-job-forks ๋˜๋Š” resque-jobs-per-fork gem์€ Resque์˜ ๋ถ„๊ธฐ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐœ๋ณ„ ์ž‘์—…์— ๋Œ€ํ•ด ๋ถ„๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ์ž‘์—… ๋ฐฐ์น˜๋‹น ํ•œ ๋ฒˆ ๋ถ„๊ธฐํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ FORK_PER_JOB ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ false ๋กœ ์„ค์ •ํ•˜์—ฌ Resque์—์„œ ๋ถ„๊ธฐ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ ฅ์—์„œ ์ด๋Ÿฌํ•œ ๋Œ€์ฒด ํฌํฌ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฃจ๋น„ ์—์ด์ „ํŠธ version 3.9.7 or higher ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด์ „ ๋ฒ„์ „์˜ ๋ฃจ๋น„ ์—์ด์ „ํŠธ๋Š” ์ด๋Ÿฌํ•œ ๋Œ€์ฒด ํฌํฌ ๋ชจ๋“œ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 3.9.7 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์—์ด์ „ํŠธ๊ฐ€ ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „์— ์‚ฌ์šฉํ–ˆ์„ ์ˆ˜ ์žˆ๋Š” manual_start ๋˜๋Š” after_fork ์™€ ๊ฐ™์€ NewRelic::Agent ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ง์ ‘ ํ˜ธ์ถœ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .

์ด์ „ Resque ๋ฒ„์ „(< 1.23.1)

Resque 1.23.1 ์ด์ „ ๋ฒ„์ „์—์„œ New Relic์˜ Ruby ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ New Relic์€ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด Resque 1.23.1 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Resque ์ž‘์—…์˜ ์ˆ˜๋ช… ๋™์•ˆ ์ค‘์š”ํ•œ ์ง€์ ์— ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด Resque( before_fork , after_fork ๋“ฑ)์— ์˜ํ•ด ๋…ธ์ถœ๋œ ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. New Relic Ruby ์—์ด์ „ํŠธ๋„ ๊ณ„์ธก์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋Ÿฌํ•œ ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1.23.1 ์ด์ „์˜ Resque ๋ฒ„์ „์—์„œ๋Š” ํ›„ํฌ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์ •์˜๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. Resque ๋ฒ„์ „ 1.23.1 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(ํ›„ํฌ๋ฅผ ์„œ๋กœ ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ๋ฒˆ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ), ํ•„์š”ํ•œ New Relic ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ Resque ํ›„ํฌ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

Example: Modifying custom Resque hooks

์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ํ›„ํฌ์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์—์ด์ „ํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Resque.before_first_fork do
# ... your custom hook code ...
NewRelic::Agent.manual_start(:dispatcher => :resque,
:sync_startup => true,
:start_channel_listener => true)
end
Resque.before_fork do |job|
# ... your custom hook code ...
NewRelic::Agent.register_report_channel(job.object_id)
end
Resque.after_fork do |job|
# ... your custom hook code ...
NewRelic::Agent.after_fork(:report_to_channel => job.object_id,
:report_instance_busy => false)
end

๊ต์ฐฉ ์ƒํƒœ ์ž‘์—…

์ผ๋ถ€ ๊ณ ๊ฐ(ํŠนํžˆ ์ž‘์—… ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งค์šฐ ๋†’์€ ๊ณ ๊ฐ)์€ Ruby ์—์ด์ „ํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋œ Resque ์ž‘์—…์ž ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ„ํ—์ ์ธ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ต์ฐฉ ์ƒํƒœ๋Š” Ruby ์—์ด์ „ํŠธ๊ฐ€ New Relic ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์™€ Resque์˜ ๋ถ„๊ธฐ ๋™์ž‘ ๊ฐ„์˜ ์ž˜๋ชป๋œ ์ƒํ˜ธ ์ž‘์šฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

  • Resque ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ FORK_PER_JOB ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ false ๋กœ ์„ค์ •ํ•˜์—ฌ Resque์˜ ๋ถ„๊ธฐ ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Ruby ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ resolv-replace ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Ruby์˜ ๊ธฐ๋ณธ DNS ํ™•์ธ ์ฝ”๋“œ๋ฅผ ์ˆœ์ˆ˜ํ•œ Ruby ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

Ruby ์—์ด์ „ํŠธ๋Š” Resque ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ New Relic ์ˆ˜์ง‘๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ™˜๊ฒฝ์—์„œ ์ด ์Šค๋ ˆ๋“œ๋Š” DNS ํ™•์ธ ์ค‘(New Relic ์ˆ˜์ง‘๊ธฐ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ํ™•์ธํ•  ๋•Œ) ๊ธฐ๋ณธ ์ž ๊ธˆ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Resque ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด fork๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋™์•ˆ ์ด ๊ธฐ๋ณธ ์ž ๊ธˆ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ถ„๊ธฐ๋œ ์ž์‹ ํ”„๋กœ์„ธ์Šค์—์„œ ์œ ์ง€๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ fork ์€ ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ๋งŒ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ ์ž ๊ธˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋Š” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ ์ž ๊ธˆ์ด ํ•ด์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ DNS ํ™•์ธ์„ ์‹œ๋„ํ•˜๋ฉด ๋™์ผํ•œ ๊ธฐ๋ณธ ์ž ๊ธˆ ๋ฐ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์–ป์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด Github ๋ฌธ์ œ ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด Ruby์˜ ๊ธฐ๋ณธ DNS ํ™•์ธ ๊ฒฝ๋กœ ๋Œ€์‹  resolv-replace ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

Copyright ยฉ 2026 New Relic Inc.

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