
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ๊ณ ๊ธ
๐ PHP ๊ณ ๊ธ - 7์ฃผ์ฐจ: ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋๋ฒ๊น - 03 PHP-FPM ์ค์ ์ต์ ํ
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-09-23 22:29:35 | |
์กฐํ์ | 12 |
PHP-FPM ์ด๋?
#PHP-FPM(FastCGI Process Manager) ์ PHP ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ #FastCGI ๊ตฌํ์ฒด์ ๋๋ค. Apache๋ Nginx ๊ฐ์ #์น_์๋ฒ ๋ ์์ฒด์ ์ผ๋ก PHP ์ฝ๋๋ฅผ ์คํํ์ง ๋ชปํฉ๋๋ค. ๋์ , ์น ์๋ฒ๋ PHP-FPM์ ์์ฒญ์ ์ ๋ฌํ๊ณ , PHP-FPM์ ์ด ์์ฒญ์ ์ฒ๋ฆฌํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์น ์๋ฒ๋ก ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. PHP-FPM์ ์ฌ๋ฌ ๊ฐ์ #ํ๋ก์ธ์ค(Worker Process)๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ด ํ๋ก์ธ์ค๋ค์ด ์ค์ PHP ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ PHP-FPM ์ค์ ์ ์ต์ ํํ๋ ๊ฒ์ #PHP_์ฑ๋ฅ_์ต์ ํ ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ ๋๋ค. ๐
PHP-FPM ์ฃผ์ ์ค์ ํญ๋ชฉ
PHP-FPM์ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ์ฃผ์ ์ค์ ์ www.conf
ํ์ผ์ ์์ต๋๋ค. ์ด ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก /etc/php/8.1/fpm/pool.d/
๋๋ C:phpphp-fpm.conf
์ ๊ฐ์ ๊ฒฝ๋ก์ ์์นํฉ๋๋ค. ์ฃผ์ ์ค์ ํญ๋ชฉ๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pm
(Process Manager)
์ด ์ค์ ์ PHP-FPM์ด ์์ปค ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. ์ธ ๊ฐ์ง ์ฃผ์ ๋ชจ๋๊ฐ ์์ต๋๋ค.
static
: ์์ปค ํ๋ก์ธ์ค ์๋ฅผ ๊ณ ์ ํฉ๋๋ค. ์๋ฒ ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ๊ณ ํธ๋ํฝ์ด ์์ธก ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ํจ์จ์ ์ ๋๋ค.ondemand
: ์์ฒญ์ด ์ฌ ๋๋ง ์์ปค ํ๋ก์ธ์ค๋ฅผ ์์ฑํฉ๋๋ค. ํธ๋ํฝ์ด ์ ์ ์น์ฌ์ดํธ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.dynamic
: ์์ฒญ๋์ ๋ฐ๋ผ ์์ปค ํ๋ก์ธ์ค ์๋ฅผ ์ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ๋๋ถ๋ถ์ ์น์ฌ์ดํธ์ ์ ํฉํ๋ฉฐ, ์ต๋/์ต์ ํ๋ก์ธ์ค ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
Ini, TOML
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_children
dynamic
๋๋ static
๋ชจ๋์์ ์์ฑํ ์ ์๋ #์ต๋_์์ปค_ํ๋ก์ธ์ค ์์
๋๋ค. ์ด ๊ฐ์ ์๋ฒ์ #๋ฉ๋ชจ๋ฆฌ_์ฉ๋ ์ ๊ณ ๋ คํ์ฌ ์ ์คํ๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค. (pm.max_children * ํ๊ท PHP ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋)
์ด ์๋ฒ์ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
pm.max_requests
ํ๋์ ์์ปค ํ๋ก์ธ์ค๊ฐ ์ฒ๋ฆฌํ ์ ์๋ #์ต๋_์์ฒญ_์ ์
๋๋ค. ์ด ์์ฒญ ์๋ฅผ ์ด๊ณผํ๋ฉด ํด๋น ์์ปค ํ๋ก์ธ์ค๋ ์ฌํ์ฉ(์ฌ์์)๋ฉ๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์(memory leak)๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. 0
์ผ๋ก ์ค์ ํ๋ฉด ๋ฌดํ๋์
๋๋ค.
Ini, TOML
pm.max_requests = 500
request_terminate_timeout
์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ์ ์๋ #์ต๋_์๊ฐ(์ด)์ ๋๋ค. ์ด ์๊ฐ์ ์ด๊ณผํ๋ฉด PHP-FPM์ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ๋ก ์ข ๋ฃํ๊ณ ๊ฒฝ๊ณ ๋ก๊ทธ๋ฅผ ๋จ๊น๋๋ค. ๋ฌดํ์ ์คํ๋๋ ์คํฌ๋ฆฝํธ๋ก ์ธํด ์์ปค ํ๋ก์ธ์ค๊ฐ ๋ฉ์ถ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
Ini, TOML
request_terminate_timeout = 30
PHP-FPM ์ค์ ์ต์ ํ ์ค์ต
1. pm
๋ชจ๋ ์ ํ
์ ์ฌ์ ์๋ฒ/๋ฎ์ ํธ๋ํฝ:
pm = ondemand
์ผ๋ฐ์ ์ธ ์น์ฌ์ดํธ:
pm = dynamic
๊ณ ์ ๋ ํธ๋ํฝ์ ์ ์ฉ ์๋ฒ:
pm = static
2. pm.max_children
๊ณ์ฐ
pm.max_children
๊ฐ์ ์ค์ ํ๊ธฐ ์ํด ๋ค์ ๊ณต์์ ํ์ฉํ ์ ์์ต๋๋ค.
pm.max_children = (์๋ฒ ์ด ๋ฉ๋ชจ๋ฆฌ - ์์คํ
์์ฝ ๋ฉ๋ชจ๋ฆฌ) / PHP ์์ปค ํ๋ก์ธ์ค ํ๊ท ๋ฉ๋ชจ๋ฆฌ
๋จผ์ , php.ini
์ memory_limit
๊ฐ์ ํ์ธํ๊ฑฐ๋, ps aux --sort -rss
๋ช
๋ น์ด๋ฅผ ํตํด ์ค์ PHP-FPM ์์ปค ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํ์ธํฉ๋๋ค.
3. ์ค์ ๋ณ๊ฒฝ ๋ฐ ์ ์ฉ
์ค์ ํ์ผ์ ์์ ํ ํ์๋ ๋ฐ๋์ PHP-FPM ์๋น์ค๋ฅผ ์ฌ์์ํด์ผ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
Bash
# Ubuntu/Debian
sudo systemctl restart php8.1-fpm
# CentOS/RHEL
sudo systemctl restart php-fpm
๋ง์น๋ฉฐ
#PHP-FPM_์ค์ _์ต์ ํ ๋ ์น ์๋ฒ์ PHP ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ์ค์ํ ์์ ์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ์ค์ ์ ํตํด ์๋ฒ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ณ , ์ฌ์ฉ์์๊ฒ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๐ป
50๋ง๊ฐ IP๋ฅผ ๋ณด์ ! ์ฌ์ฉ์ด๋ ฅ ์๋ IP์ ๊ณต ๊ฐํธ์ฌ์ฉ ๋ฌด๋ฃํ ์คํธ OK