DNS issue

์„œ๋น„์Šค Timeout ์ด์Šˆ

nginx log

upstream_response_time 10์ดˆ ๋ฐœ์ƒ

packet dump

ํ•ด๋‹น ์‹œ๊ฐ„๋Œ€ ํŒจํ‚ท ํ™•์ธํ•ด๋ณด๋‹ˆ nginx -> 2๋ฒˆ์„œ๋ฒ„ ์œผ๋กœ ์—ฐ๊ฒฐ nginx -> 2 POST Request ํ›„ API#2์—์„œ ACK ๋ฐ”๋กœ ์ˆ˜์‹ ๋จ 2๋ฒˆ์„œ๋ฒ„ -> nginx ๋Œ€๋žต 10์ดˆ ์žˆ๋‹ค๊ฐ€ 200 ok Response

apm Log

APM ๋กœ๊ทธ ํ™•์ธํ•ด๋ณด๋‹ˆ

์ด 422ms ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€๋Š” 159 ms๋งŒ์— ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๊ณ  ๋‚˜์˜ด

ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ๋Š” 10์ดˆ ์ด์ƒ ๊ฑธ๋ ค์„œ timeout ๋ฐœ์ƒ ๊ทธ ํ›„ ์žฌ์‹œ๋„ ํ–ˆ๋Š”๋ฐ ์šฐ๋ฆฌ์ธก ์„œ๋ฒ„์—์„œ๋Š” ์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ์ž…์žฅ์ด์—ฌ์„œ 500 error response ํ•˜๋Š” ์ƒํ™ฉ ์ธ ๊ฒƒ ๊ฐ™์Œ

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฑด ์™œ? 2๋ฒˆ ์„œ๋ฒ„๋Š” ๋ฐ”๋กœ ์‘๋‹ต์„ ์ฃผ์ง€ ์•Š์•˜์„๊นŒ?

๋‹ค๋ฅธ case

์ฐพ๋‹ค๋ณด๋‹ˆ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋„ํ•ด๋‹น ์‹œ๊ฐ„๋Œ€์— ๋™์ผํ•œ ํ˜„์ƒ์„ ํ™•์ธํ–ˆ๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ 2024.03.13 18:35:32 ~ 18:35:59 ํ•ด๋‹น ์‹œ๊ฐ„๋Œ€์— response_time์ด ๊ต‰์žฅํžˆ ๋†’์Œ

๋™์‹œ๊ฐ„๋Œ€ ํ™•์ธํ•ด๋ณด๋‹ˆ ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ๋ฐœ์ƒํ•จ

์„œ๋ฒ„#1

์œ„ ์ผ€์ด์Šค๋Š” 2๋ฒˆ์„œ๋ฒ„์—์„œ ํ™•์ธํ–ˆ์„ ๋•Œ์˜ ๋‚ด์šฉ์ž„

2024.03.13 18:35:32 ~ 18:35:59 ์‹œ๊ฐ„๋Œ€ 1๋ฒˆ๋„์„œ๋ฒ„ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋™์ผํ•˜๊ฒŒ ๋ฐœ์ƒ๋จ

์™œ ์„œ๋ฒ„๋“ค์ด Response๋ฅผ ๋А๋ฆฌ๊ฒŒ ์ฃผ๋Š”๊ฑธ๊นŒ ?

1. nginx ๋ฌธ์ œ?

์œ„ ์บก์ณ๋“ค์€ API ์„œ๋ฒ„์—์„œ ์บก์ณํ•œ ๊ฒƒ Request๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋ฐ›๊ณ  ack๋„ ๋‚ ๋ฆผ. nginx ๋ฌธ์ œ๋Š” ์•„๋‹ ๊ฒƒ ๊ฐ™์Œ

2. ๊ทธ๋Ÿผ ์™œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ฐํžŒ request ์‹œ๊ฐ„์€ nginx request ์‹œ๊ฐ„๊ณผ ๋‹ค๋ฅธ๊ฐ€?

์›์ธ

์‹ค์ œ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด Mar 14, 2024 @ 13:43:51.497์— ๋ฐ›์•˜๊ณ  Mar 14, 2024 @ 13:43:56.531์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ Incoming request์ด ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์ด ๊ณต๋ฐฑ์˜ 5์ดˆ๋Š” ๋ฌด์—‡์ผ๊นŒ

strace

Strace๋ฅผ ์กฐํšŒ ๊ฒฐ๊ณผ Request ํŒจํ‚ท์„ ๋ฐ›์€ ์ดํ›„์— ์ž์‹ ์˜ IP๋กœ PTR ๋ ˆ์ฝ”๋“œ Lookup

API ์„œ๋ฒ„์—์„œ ๊ตฌ๊ธ€ DNS๋กœ ์ž์‹ ์˜ IP PTR ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง€์†์ ์œผ๋กœ ์กฐํšŒ ๊ตฌ๊ธ€ DNS์—์„œ ์‘๋‹ต์ด ์—†์„ ๋•Œ timeout ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ DNS Timeout ์‹œ๊ฐ„ ๊ธฐ๋ณธ 5์ดˆ๋กœ ํ™•์ธ ๋จ

์ž„์‹œ ํ•ด๊ฒฐ์ฑ…

ptr ๋ ˆ์ฝ”๋“œ lookup์„ ํ•˜์ง€์•Š๊ฒŒ hosts ํŒŒ์ผ์— ์ž„์‹œ๋กœ ์ž‘์„ฑ

์›์ธ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ์— dns lookup ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด ์ œ๊ฑฐ ํ•จ.

๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„๋“ค์˜ DNS ์„œ๋ฒ„๊ฐ€ ์™ธ๋ถ€๋กœ ๋˜์–ด์žˆ์–ด timeout๋ฐœ์ƒํ•œ ๊ฒƒ์ด 2์ฐจ์ ์ธ ์›์ธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•จ

์ถ”ํ›„์— ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ ํ™•์ธํ•ด์„œ ์™ธ๋ถ€ dns๋ฅผ ๋‚ด๋ถ€ dns๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ๊ฒ ๋‹ค.

๋А๋‚€์ 

1. ์‹œ์Šคํ…œ์ฝœ์˜ ์ค‘์š”์„ฑ

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์„ํ•˜๋ฉด์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ์Šคํ…œ ์ฝœ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด strace ํˆด์„ ์ฒ˜์Œ ์จ๋ดค๋‹ค. ๋ณด๊ธฐ๊ฐ€ ์‰ฝ์ง€์•Š์•˜์ง€๋งŒ ์›์ธ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ํฐ ๋„์›€์„ ์คฌ๋‹ค. ์‹œ์Šคํ…œ ์ฝœ์„ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.

2. ๋กœ๊ทธ์˜ ์ค‘์š”์„ฑ

์‹œ์Šคํ…œ์ฝœ์„ ๋ถ„์„ํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋กœ๊ทธ๋งŒ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉด์„œ ์–ด๋–ค ๋ฌธ์ œ์ธ์ง€๋ฅผ ํŒŒ์•…ํ–ˆ๋‹ค. ๋กœ๊ทธ๋„ ์•ˆ์ฐํ˜”์—ˆ๋‹ค๋ฉด ์›์ธ์„ ์ฐพ๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ ธ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋กœ๊ทธ์˜ ์ค‘์š”์„ฑ์„ ๋‹ค์‹œํ•œ๋ฒˆ ๋А๊ผˆ๋‹ค.

Last updated