πŸ’» 2024.04.19 λŒ€μš©λŸ‰ νŠΈλž˜ν”½μœΌλ‘œ μΈν•œ μΈμŠ€ν„΄μŠ€ μ„œλ²„ 포트 포화, 이둜 μΈν•œ 502 μ—λŸ¬

이좘길·2024λ…„ 4μ›” 19일
0

κ°œλ°œμΌμ§€

λͺ©λ‘ 보기
1/1
post-thumbnail

πŸ“Œ κ°œμš”

λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ„ λŒ€μ‘ν•˜λŠ” μ„œλΉ„μŠ€λ₯Ό 운영 쀑이닀. Nλ…„κ°„ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜κ³  μžˆμ—ˆκ³ , 이상이 μ—†μ—ˆλ‹€. 그런데 μ§€λ‚œμ£Όμ— μš°μ—°νžˆ 502 μ—λŸ¬κ°€ λœ¨λ©΄μ„œ API 호좜이 μ •μƒμ μœΌλ‘œ λ˜μ§€ μ•ŠλŠ” 이슈λ₯Ό λ°œκ²¬ν–ˆλ‹€. μ„œλ²„ μŠ€μΌ€μΌ μ•„μ›ƒμœΌλ‘œ μ²˜λ¦¬ν–ˆκ³ , λ¬Έμ œκ°€ 해결됐닀고 μƒκ°ν–ˆμœΌλ‚˜, 금일, μƒˆλ²½ 6μ‹œκ²½ λͺ°λ¦¬λŠ” νŠΈλž˜ν”½μœΌλ‘œ 같은 μ΄μŠˆκ°€ λ°œμƒν–ˆκ³ , 근본적인 문제 해결이 ν•„μš”ν•  것 κ°™λ‹€λŠ” 진단을 λ‚΄λ Έλ‹€.

πŸ“Œ 원인 νŒŒμ•… (1) - Nginx μ„€μ • 체크

넀이버 ν΄λΌμš°λ“œ ν”Œλž«νΌμ„ μ‚¬μš©ν•˜κ³  μžˆμ—ˆκ³ , λ‘œλ“œ λ°ΈλŸ°μ„œ(Auto Scaling), Nginx, PM2 μ„œλ²„λ‘œ μ΄μ–΄μ§€λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό 톡해 λ°±μ—”λ“œλ₯Ό κ΅¬μΆ•ν–ˆλ‹€. κ°„ν—μ μœΌλ‘œ λ°œμƒν•˜λŠ” 502 μ—λŸ¬μ™€ nginx, error.log에 μ°νžˆλŠ” 99, 110, 111 μ—λŸ¬λ₯Ό ν™•μΈν–ˆκ³ , ν˜Ήμ‹œ, nginx 섀정에 μ΄μŠˆκ°€ μžˆμ„κΉŒλ₯Ό μ˜μ‹¬ν•˜λ©° ν•΄λ‹Ή μ—λŸ¬κ°€ λœ¨μ§€ μ•Šλ„λ‘ 쑰치λ₯Ό μ·¨ν•˜κ³ μž λ…Έλ ₯ν–ˆλ‹€. λ°˜λŒ€λ‘œ, nginx 섀정이 μ΄μŠˆκ°€ μžˆμ—ˆλ‹€λ©΄, μ• μ΄ˆμ— λ™μž‘ν•˜μ§€ μ•Šκ±°λ‚˜ μ΄λ ‡κ²Œ μ˜€λž«λ™μ•ˆ μœ μ§€κ°€ 될 일이 없을 것 κ°™λ‹€λŠ” μ˜λ¬Έμ€ λ™μ‹œμ— ν’ˆκ³  μžˆμ—ˆλ‹€. μ—­μ‹œλ‚˜, κΈ°μ‘΄ 섀정은 크게 λ¬Έμ œκ°€ μ—†μ—ˆκ³ , ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ μ„€μ • 변화에도 μ—¬μ „νžˆ 같은 μ΄μŠˆκ°€ λ°œμƒν–ˆλ‹€.

πŸ“Œ 원인 νŒŒμ•… (2) - 502 μ—λŸ¬μ— λŒ€ν•œ κ³ μ°°

μ–΄μ¨Œλ“ , 502μ—λŸ¬λŠ” λΆ€ν•˜λ‘œ λ°œμƒν•œ κ²ƒμ΄λΌλŠ” λ§₯락을 μžƒμ§€ μ•ŠμœΌλ©° λ‹€μŒ 수λ₯Ό κ³ λ―Όν–ˆλ‹€. 결둠적으둜, νŠΈλž˜ν”½ μ¦λŒ€λ‘œ μΈν•œ LBμ—μ„œ Nginx둜 κ°€λŠ” κΈΈ λ˜λŠ”, Nginxμ—μ„œ ν”„λ‘μ‹œ 패슀λ₯Ό 톡해 μ‹€μ„œλ²„λ‘œ κ°€λŠ” κΈΈ 이 두 κΈΈ 쀑에 μ΄μŠˆκ°€ μžˆλŠ” 건 λΆ„λͺ…ν•˜λ‹€. κ·Έλž˜μ„œ, LBλ₯Ό ꡐ체해 λ³΄μ•˜μœΌλ‚˜ μ‹€νŒ¨, κ·Έλž˜μ„œ, 99번 μ—λŸ¬λ₯Ό 보던 쀑, μš°μ—°νžˆ μ–΄λ–€ ν•œ ν¬μŠ€νŒ…μ„ λ°œκ²¬ν–ˆλ‹€. TIME_WAIT으둜 μΈν•œ Local Port 고갈 문제λ₯Ό 닀룬 ν•΄λ‹Ή 글을 ν† λŒ€λ‘œ, νŠΈλž˜ν‚Ήμ„ μ‹œμž‘ν–ˆκ³ , 같은 μ΄μŠˆκ°€ μžˆμŒμ„ ν™•μΈν–ˆλ‹€.

πŸ“Œ ν•΄κ²° - μΈμŠ€ν„΄μŠ€ 포트 μœ μ—°μ„± λΆ€μ—¬

  1. 포트 λ²”μœ„ μ¦λŒ€ - AS_IS : 32768 ~ 60999 / TO_BE : 10240 ~ 65535
  2. TIME_WAIT 포트 즉각 μž¬μ‚¬μš©
$ echo "10240 65535" > /proc/sys/net/ipv4/ip_local_port_range
$ sudo sysctl -w "net.ipv4.tcp_timestamps=1"
$ sudo sysctl -w "net.ipv4.tcp_tw_reuse=1"

πŸ“Œ κ²°λ‘  - λͺ¨λ‹ˆν„°λ§κ³Ό 둜그λ₯Ό ν™•μ‹€νžˆ

  1. μ™„μ „ 무결성인 ν”„λ‘œκ·Έλž¨μ€ μ—†λ‹€. κ·Έλž˜μ„œ, λͺ¨λ‹ˆν„°λ§, 둜그λ₯Ό ν™•μ‹€νžˆ
  2. λͺ¨λ‹ˆν„°λ§
    2-1) λ§€νŠΈλ¦­λ“€μ„ λŒ€μ‹œλ³΄λ“œ, μ•ŒλžŒ 섀정을 톡해 μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 μžˆλ„λ‘ μ„€μ •
    2-2) λͺ¨λ‹ˆν„°λ§ λ ˆλ²¨μ„ μ •κ΅ν•˜κ²Œ μ„€μ •ν•˜μ—¬ λ‹₯쳐올 상황듀을 μΈμ§€ν•˜κ³  있기
  3. 둜그
    3-1) 둜그 λ ˆλ²¨λ³„λ‘œ μ •λ°€ν•˜κ²Œ 둜그 μŒ“κΈ°
    3-2) λͺ¨λ‹ˆν„°λ§ μ‹œμ κ³Ό μ—°κ²°ν•˜μ—¬ 확인할 수 μžˆλ„λ‘ μ…‹νŒ…
profile
일지λ₯Ό κΎΈμ€€νžˆ μž‘μ„±ν•˜μž.

0개의 λŒ“κΈ€