๐Ÿšจ 504/502 Gateway ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ํฌ์ŠคํŒ…: PHP-FPM ํ”„๋กœ์„ธ์Šค ๊ณ ๊ฐˆ ๋ฌธ์ œ

1. ๋ฌธ์ œ ์ฆ์ƒ ๋ฐ ์ดˆ๊ธฐ ์ง„๋‹จ

๊ฐ‘์ž๊ธฐ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ–ˆ์„ ๋•Œ 504 Gateway Time-out ๋˜๋Š” 502 Bad Gateway ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ์‚ฌ์ดํŠธ๊ฐ€ ๊ฐ„ํ—์ ์œผ๋กœ ๋จนํ†ต์ด ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ํŠน์ • ์‚ฌ์ดํŠธ์—์„œ๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , HTML ๊ฐ™์€ ์ •์  ํŒŒ์ผ์€ ์ž˜ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ์ง„๋‹จ ๊ฒฐ๊ณผ, MySQL ์„œ๋ฒ„๋Š” ์ •์ƒ ์ž‘๋™ ์ค‘์ด์—ˆ์œผ๋ฉฐ, ๋ฌธ์ œ๋Š” Nginx์™€ ๋ฐฑ์—”๋“œ PHP-FPM ์‚ฌ์ด์˜ ํ†ต์‹  ๋ฌธ์ œ๋กœ ์ขํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ๋กœ๊ทธ์—์„œ ๋ฐœ๊ฒฌ๋œ ํ•ต์‹ฌ ๋‹จ์„œ

PHP-FPM ์˜ค๋ฅ˜ ๋กœ๊ทธ(sudo tail -n 50 /var/log/php/8.3/fpm/www-error.log ๋˜๋Š” sudo tail -n 50 /var/log/php*-fpm.log)๋ฅผ ํ™•์ธํ•œ ๊ฒฐ๊ณผ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ๊ณ ์™€ ์•Œ๋ฆผ์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

WARNING: [pool www] server reached pm.max_children setting (30), consider raising it
WARNING: [pool www] seems busy...
NOTICE: Terminating ... exiting, bye-bye!

์ง„๋‹จ ๊ฒฐ๊ณผ: PHP-FPM์ด ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค ์ˆ˜(pm.max_children)๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ ๊ฐˆ๋˜์—ˆ๊ฑฐ๋‚˜, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜์ฒด์ œ๊ฐ€ PHP ์„œ๋น„์Šค๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.


2. ๊ทผ๋ณธ ์›์ธ: ์™ธ๋ถ€ API ์ค‘๋‹จ๊ณผ ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ

๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์— ์˜คํ”ˆ API ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ๋‹ค๋Š” ์ ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด PHP ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งˆ๋น„์‹œํ‚จ ๊ทผ๋ณธ ์›์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฌดํ•œ ๋Œ€๊ธฐ: PHP ์Šคํฌ๋ฆฝํŠธ๋Š” API ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€๋งŒ, API ์„œ๋ฒ„๊ฐ€ ์ค‘๋‹จ๋˜์–ด ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ๋ฌดํ•œ ๋Œ€๊ธฐ ์ƒํƒœ์— ๋น ์ง‘๋‹ˆ๋‹ค.
  2. ํ”„๋กœ์„ธ์Šค ์ ์œ : ๋Œ€๊ธฐ ์ƒํƒœ์— ๋น ์ง„ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ•œ ์ฑ„ ๋‹ค๋ฅธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ: ์ ‘์†์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ pm.max_children ํ•œ๋„๋ฅผ ์ฑ„์šฐ๊ณ , ๊ฒฐ๊ตญ ์„œ๋ฒ„์˜ ๋ชจ๋“  PHP ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ ๊ฐˆ์‹œ์ผœ ๋‹ค๋ฅธ ์ •์ƒ์ ์ธ ์‚ฌ์ดํŠธ๊นŒ์ง€ ๋А๋ ค์ง€๊ฑฐ๋‚˜ 504 ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

3. ํ•ด๊ฒฐ์ฑ…: PHP-FPM ์„ค์ • ์ตœ์ ํ™” ๋ฐ ํƒ€์ž„์•„์›ƒ ์กฐ์ •

์ด ๋ฌธ์ œ๋Š” ์„œ๋ฒ„์˜ RAM ์šฉ๋Ÿ‰์— ๋งž์ถฐ PHP-FPM ํ”„๋กœ์„ธ์Šค ํ•œ๋„๋ฅผ ๋Š˜๋ฆฌ๊ณ  PHP๊ฐ€ ์™ธ๋ถ€ ์‘๋‹ต์„ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋„๋ก ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

A. PHP-FPM ํ”„๋กœ์„ธ์Šค ํ•œ๋„ ์ฆ์„ค (pm.max_children)

์„œ๋ฒ„์˜ RAM ์šฉ๋Ÿ‰์„ ํ™•์ธํ•œ ํ›„, /etc/php/8.3/fpm/pool.d/www.conf ํŒŒ์ผ์—์„œ pm.max_children ๊ฐ’์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ RAM (์˜ˆ์‹œ)PHP ํ”„๋กœ์„ธ์Šค๋‹น ๋ฉ”๋ชจ๋ฆฌ (๊ฐ€์ •)์•ˆ์ „ํ•œ pm.max_children ๊ฐ’ (๊ถŒ์žฅ ์‹œ์ž‘์ )
2 GB50 MB์•ฝ 30๊ฐœ
4 GB50 MB์•ฝ 70๊ฐœ
8 GB50 MB์•ฝ 150๊ฐœ

PHP-FPM ์„ค์ • ํŒŒ์ผ (www.conf) ์ˆ˜์ • ์˜ˆ์‹œ:

Ini, TOML

; pm.max_children์„ RAM ์šฉ๋Ÿ‰์— ๋งž์ถฐ ์กฐ์ •
pm.max_children = 70      
pm.start_servers = 15     
pm.min_spare_servers = 10 
pm.max_spare_servers = 30 

B. PHP-FPM ๋ฐ Nginx ํƒ€์ž„์•„์›ƒ ์„ค์ •

PHP ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™ธ๋ถ€ API๋ฅผ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ํ•ญ๋ชฉ์„ค์ • ์œ„์น˜๊ถŒ์žฅ ๊ฐ’์—ญํ• 
request_terminate_timeout/etc/php/8.3/fpm/pool.d/www.conf60sPHP ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ฐ•์ œ๋กœ ์ œํ•œ (Nginx ํƒ€์ž„์•„์›ƒ๋ณด๋‹ค ์งง๊ฒŒ ์„ค์ •)
proxy_read_timeoutNginx ์‚ฌ์ดํŠธ ์„ค์ • ํŒŒ์ผ (.conf)300sNginx๊ฐ€ ๋ฐฑ์—”๋“œ(PHP)์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„ (504 ์˜ค๋ฅ˜ ์™„ํ™”)

Sheets๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

๐Ÿ› ๏ธ ์ตœ์ข… ์ ์šฉ ๋ช…๋ น์–ด

์„ค์ • ํŒŒ์ผ ์ˆ˜์ • ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ ๋‘ ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‘ ์žฌ์‹œ์ž‘ํ•ด์•ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

Bash

# 1. PHP-FPM ์žฌ์‹œ์ž‘
sudo systemctl restart php8.3-fpm

# 2. Nginx ์žฌ์‹œ์ž‘
sudo systemctl restart nginx 

์ด ๊ณผ์ •์„ ํ†ตํ•ด PHP ํ”„๋กœ์„ธ์Šค ๊ณ ๊ฐˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์–ด ์„œ๋น„์Šค๊ฐ€ ์ •์ƒํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” PHP ์ฝ”๋“œ ๋‚ด์—์„œ ์™ธ๋ถ€ API ํ˜ธ์ถœ ์‹œ ํƒ€์ž„์•„์›ƒ ์˜ต์…˜(์˜ˆ: cURL์˜ CURLOPT_TIMEOUT)์„ ์งง๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์™ธ๋ถ€ ์žฅ์• ๊ฐ€ ์„œ๋ฒ„ ์ „์ฒด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€ ๋‹ฌ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค

์œ„๋กœ ์Šคํฌ๋กค