PHP-FPM ์„ค์ •: ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด pm static ์‚ฌ์šฉ

PHP-FPM ์„ค์ •: ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด pm static ์‚ฌ์šฉ

์ด ๊ธฐ์‚ฌ์˜ ํŽธ์ง‘๋˜์ง€ ์•Š์€ ๋ฒ„์ „์€ ์›๋ž˜ ๋‹ค์Œ ์œ„์น˜์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. haydenjames.io ๊ทธ๋…€์˜ ํ—ˆ๋ฝ์„ ๋ฐ›์•„ ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €์ž.

์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆฌ๊ณ  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ค„์ด๋ฉฐ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณด๋‹ค ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด PHP-FPM์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ PHP-FPM์˜ PM(ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž) ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™์ , ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค ์ฃผ๋ฌธํ˜•. php.net ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ 2๊ฐ€์ง€ ์ œ์–ด ์˜ต์…˜์„ ๋น„๊ตํ•˜๊ณ  ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์˜ต์…˜์ด ์ด๋“ค๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •์  ์ธ ๋Œ€๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ ์˜คํ›„:

์˜คํ›„ = ๋™์  โ€” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋Š” ๋‹ค์Œ ์ง€์‹œ์–ด์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
์˜คํ›„ = ์ฃผ๋ฌธํ˜• - ํ”„๋กœ์„ธ์Šค๋Š” ์š”์ฒญ ์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(๋™์  ์ƒ์„ฑ๊ณผ ๋ฐ˜๋Œ€๋กœ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ pm.start_servers๊ฐ€ ์‹œ์ž‘๋  ๋•Œ).
์˜คํ›„ = ์ •์  โ€” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋Š” ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. pm.max_children.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ „์—ญ ์ง€์‹œ๋ฌธ์˜ ์ „์ฒด ๋ชฉ๋ก php-fpm.conf.

PHP-FPM ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž์™€ CPU ์ฃผํŒŒ์ˆ˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์œ ์‚ฌ์ 

์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ PHP-FPM ๊ตฌ์„ฑ ์ฃผ์ œ์™€ ์—ฐ๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋žฉํ†ฑ, ๊ฐ€์ƒ ๋จธ์‹  ๋˜๋Š” ์ „์šฉ ์„œ๋ฒ„์—์„œ ํ”„๋กœ์„ธ์„œ ์†๋„ ์ €ํ•˜๋ฅผ ํ•œ ๋ฒˆ๋„ ๊ฒฝํ—˜ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ. CPU ์ฃผํŒŒ์ˆ˜ ์Šค์ผ€์ผ๋ง์„ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”? ์ด ์˜ต์…˜์€ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. nix์™€ Windows๋Š” ํ”„๋กœ์„ธ์„œ ์Šค๋กœํ‹€ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ๊ณผ ์‘๋‹ต์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ˜• ์— ์„ฑ๋Šฅ*. ์ด๋ฒˆ์—๋Š” ์„ค๋ช…์„ ๋น„๊ตํ•˜๊ณ  ์œ ์‚ฌ์ ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฑฐ๋ฒ„๋„ˆ=์š”์ฒญ ์‹œ โ€” ํ˜„์žฌ ๋กœ๋“œ์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์„œ ์ฃผํŒŒ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ ๋นˆ๋„๋กœ ๋น ๋ฅด๊ฒŒ ์ ํ”„ํ•œ ๋‹ค์Œ ๋น„ํ™œ์„ฑ ๊ธฐ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด ๋นˆ๋„๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
์ฃผ์ง€์‚ฌ=๋ณด์ˆ˜= ํ˜„์žฌ ๋ถ€ํ•˜์— ๋”ฐ๋ฅธ ๋™์  ์ฃผํŒŒ์ˆ˜ ์Šค์ผ€์ผ๋ง. ์˜จ๋””๋งจ๋“œ๋ณด๋‹ค ์ฃผํŒŒ์ˆ˜๋ฅผ ๋” ์›ํ™œํ•˜๊ฒŒ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ž…๋‹ˆ๋‹ค.
์ฃผ์ง€์‚ฌ = ์„ฑ๊ณผ โ€” ์ฃผํŒŒ์ˆ˜๋Š” ํ•ญ์ƒ ์ตœ๋Œ€์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ํ”„๋กœ์„ธ์„œ ์ฃผํŒŒ์ˆ˜ ์กฐ์ •๊ธฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ „์ฒด ๋ชฉ๋ก.

์œ ์‚ฌ์ ์ด ๋ณด์ด๋‚˜์š”? ๋‚˜๋Š” ์ด๊ฒƒ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค๋Š” ๊ฒƒ์„ ๋‹น์‹ ์—๊ฒŒ ํ™•์‹ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ด ๋น„๊ต๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜คํ›„ ์ •์  PHP-FPM์šฉ.

ํ”„๋กœ์„ธ์„œ ์กฐ์ ˆ๊ธฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์„œ๋ฒ„์˜ CPU ์ œํ•œ์— ๊ฑฐ์˜ ์ „์ ์œผ๋กœ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๊ฒŒ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ์™ธ์—๋„ ์˜จ๋„, ๋ฐฐํ„ฐ๋ฆฌ ์ถฉ์ „(๋…ธํŠธ๋ถ์˜ ๊ฒฝ์šฐ) ๋ฐ ํ”„๋กœ์„ธ์„œ๋ฅผ 100%๋กœ ์ง€์†์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋”ฐ๋ฅธ ๊ธฐํƒ€ ๋ถ€์ž‘์šฉ๊ณผ ๊ฐ™์€ ์š”์ธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์„ค์ •์€ ๊ฐ€์žฅ ๋น ๋ฅธ ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋‚ด์šฉ์„ ์ฝ์–ด๋ณด์„ธ์š”. Raspberry Pi์˜ force_turbo ๋งค๊ฐœ๋ณ€์ˆ˜RPi ํŒจ๋„์ด ๋ ˆ๊ทค๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์„ฑ๋Šฅ, ๋‚ฎ์€ CPU ํด๋Ÿญ ์†๋„๋กœ ์ธํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ๋”์šฑ ๋ˆˆ์— ๋„๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

pm static์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ๋Œ€ ์„œ๋ฒ„ ์„ฑ๋Šฅ ๋‹ฌ์„ฑ

PHP-FPM ์˜ต์…˜ ์˜คํ›„ ์ •์  ์„œ๋ฒ„์˜ ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค ์ฃผ๋ฌธํ˜• ๋˜๋Š” ๋™์ . ๋ฐ˜๋ฉด์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ pm์„ ์„ค์ •ํ•˜์—ฌ PHP ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ์ธ ์ตœ๋Œ€ ์„œ๋ฒ„ ์šฉ๋Ÿ‰๊นŒ์ง€. ์ฆ‰, ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ๊ณ„์‚ฐ๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜คํ›„.์ •์  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” PHP-FPM ํ”„๋กœ์„ธ์Šค์˜ ์ตœ๋Œ€ ๋ณผ๋ฅจ, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์ด๋‚˜ ์บ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ์••๋„ํ•˜๊ณ  ์‹คํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋งŽ์€ PHP-FPM ์ž‘์—…์„ ์ถ•์ ํ•  ์ •๋„๋กœ ๋†’์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค..

PHP-FPM ์„ค์ •: ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด pm static ์‚ฌ์šฉ

์œ„ ์Šคํฌ๋ฆฐ์ƒท์—์„œ ์„œ๋ฒ„๋Š” pm = ์ •์  ๋ฐ pm.max_children = 100, ์ด๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ 10GB ์ค‘ ์•ฝ 32GB๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์—ด์— ์ฃผ์˜ํ•˜์„ธ์š”. ์—ฌ๊ธฐ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฐ์ƒท์—๋Š” Google Analytics์— ์•ฝ 200๋ช…์˜ ํ™œ์„ฑ ์‚ฌ์šฉ์ž(60์ดˆ ์ด์ƒ)๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์—์„œ๋Š” PHP-FPM ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์˜ ์•ฝ 70%๊ฐ€ ์—ฌ์ „ํžˆ ์œ ํœด ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ฆ‰, PHP-FPM์€ ํ˜„์žฌ ํŠธ๋ž˜ํ”ฝ์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ตœ๋Œ€ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ์–‘์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์œ ํœด ํ”„๋กœ์„ธ์Šค๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์ตœ๊ณ ์กฐ์— ๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ฆ‰์‹œ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. pm ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. pm.process_idle_timeout. ๊ฐ’์„ ์•„์ฃผ ๋†’๊ฒŒ ์„ค์ •ํ–ˆ์–ด์š” pm.max_requests์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์€ PHP์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์—†์ด ์ž‘๋™ํ•˜๋Š” ์„œ๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค pm.max_requests = 0 ๊ธฐ์กด ๋ฐ ํ–ฅํ›„ PHP ์Šคํฌ๋ฆฝํŠธ์— ์™„์ „ํžˆ ํ™•์‹ ์ด ์žˆ๋‹ค๋ฉด static์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ pm ๋น„์šฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์š”์ฒญ์„ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ ์–ด๋„ pm.max_requests = 1000 - ์ˆ˜๋Ÿ‰์— ๋”ฐ๋ผ pm.max_children ์ดˆ๋‹น ์š”์ฒญ ์ˆ˜.

์Šคํฌ๋ฆฐ์ƒท์€ ๋ช…๋ น์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ํƒ‘, u(์‚ฌ์šฉ์ž) ๋ฐ PHP-FPM ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ํ•„ํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ 50๊ฐœ ์ •๋„์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ํ‘œ์‹œ๋˜์ง€๋งŒ(์ •ํ™•ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค), ๊ธฐ๋ณธ์ ์œผ๋กœ top์€ ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ๋งž๋Š” ์ƒ์œ„ ํ†ต๊ณ„๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” % CPU(%CPU)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. 100๊ฐœ์˜ PHP-FPM ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‘ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”.

top -bn1 | grep php-fpm

pm ondemand ๋ฐ ๋™์ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

์˜คํ›„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋™์ , ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Serverfault์˜ ์ด ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.. ์ด ๊ฒฝ์šฐ pm.min ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์•˜๊ณ , ์›น ํŠธ๋ž˜ํ”ฝ์ด ๋„ˆ๋ฌด ๋‹ค์–‘ํ•˜๊ณ  ๋†’์€ ํ”ผํฌ์™€ ๊นŠ์€ ๊ณ„๊ณก์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— pm์„ ์ ์ ˆํ•˜๊ฒŒ ์กฐ์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋™์ . ์ผ๋ฐ˜์ ์œผ๋กœ ์˜คํ›„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ˜•, ๊ฐ™์€ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์กฐ์–ธํ–ˆ๋“ฏ์ด. ํ•˜์ง€๋งŒ ์ด๊ฒŒ ๋” ๋‚˜์œ ์ด์œ ๋Š” ์ฃผ๋ฌธํ˜• ํŠธ๋ž˜ํ”ฝ์ด ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†์„ ๋•Œ ์œ ํœด ํ”„๋กœ์„ธ์Šค๋ฅผ XNUMX์œผ๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์—ฌ์ „ํžˆ ํŠธ๋ž˜ํ”ฝ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์—„์ฒญ๋‚œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ. ๊ทธ๋Ÿผ ๋” ์ž˜ ํ™œ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฑฐ์—์š” ์˜คํ›„.์ •์  + ๋†’์€ ์ˆซ์ž pm.max_requests.

PM ๋™์  ํŠนํžˆ ์ฃผ๋ฌธํ˜• PHP-FPM ํ’€์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ cPanel ๊ณ„์ •์„ ํ˜ธ์ŠคํŒ…ํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ํ’€์—์„œ ์—ฌ๋Ÿฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 100๊ฐœ๊ฐ€ ๋„˜๋Š” cpanel ๊ณ„์ •๊ณผ ์•ฝ 200๊ฐœ์˜ ๋„๋ฉ”์ธ์ด ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š”๋ฐ pm.static ๋˜๋Š” ์‹ฌ์ง€์–ด ๋™์ ์œผ๋กœ๋„ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ํ•„์š”ํ•œ ๊ฒƒ์€ ์ฃผ๋ฌธํ˜•๊ฒฐ๊ตญ ์›น์‚ฌ์ดํŠธ์˜ XNUMX/XNUMX ์ด์ƒ์ด ํŠธ๋ž˜ํ”ฝ์ด ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ˜• ๋ชจ๋“  ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋˜์–ด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ˆ์•ฝ๋ฉ๋‹ˆ๋‹ค! ๋‹คํ–‰ํžˆ cPanel ๊ฐœ๋ฐœ์ž๋Š” ์ด๋ฅผ ์•Œ์•„์ฐจ๋ฆฌ๊ณ  ๊ฐ’์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ˜•. ์ด์ „์—๋Š” ๊ธฐ๋ณธ๊ฐ’์ด ๋™์ , PHP-FPM์€ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ๊ณต์œ  ์„œ๋ฒ„์—๋Š” ์ „ํ˜€ ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. suPHP, ์˜คํ›„๋‹ˆ๊นŒ ๋™์  ์œ ํœด ํ’€ ๋ฐ cPanel PHP-FPM ๊ณ„์ •์ด ์žˆ์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ์ข‹์œผ๋ฉด PHP-FPM ํ’€์ด ๋งŽ์€ ์„œ๋ฒ„(๊ณต์œ  ํ˜ธ์ŠคํŒ…)์—์„œ๋Š” ํ˜ธ์ŠคํŒ…๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

PHP-FPM์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž ์ฃผ๋ฌธํ˜• ะธ ๋™์  PHP-FPM์˜ ๊ฒฝ์šฐ ๊ณ ์œ ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ธํ•ด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ณ  ์ตœ๋Œ€ ์„œ๋ฒ„ ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ PHP-FPM ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜์‹ญ์‹œ์˜ค. ์ฒซ ๋ฒˆ์งธ ์„ธํŠธ pm.max_children ์ตœ๋Œ€ ์˜คํ›„ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ๋™์  ๋˜๋Š” ์ฃผ๋ฌธํ˜•, ๋ฉ”๋ชจ๋ฆฌ์™€ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ณผ๋ถ€ํ•˜๋˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€๊นŒ์ง€ ์ด ๊ฐ’์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ์˜คํ›„ ์ •์ , ๋ฉ”๋ชจ๋ฆฌ์— ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์œผ๋ฏ€๋กœ ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ์œผ๋กœ ์ธํ•ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ CPU ๊ธ‰์ฆ์ด ์ค„์–ด๋“ค๊ณ  ์„œ๋ฒ„ ๋ฐ CPU ๋กœ๋“œ ํ‰๊ท ์ด ํ‰์ค€ํ™”๋ฉ๋‹ˆ๋‹ค. ํ‰๊ท  PHP-FPM ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ๋Š” ์›น ์„œ๋ฒ„์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ์ˆ˜๋™ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ณด๋‹ค ์ž๋™ํ™”๋œ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋™์  ะธ ์ฃผ๋ฌธํ˜• - ๋” ์œ ๋ช…ํ•œ. ์ด ๊ธฐ์‚ฌ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

UPD ๋ฒค์น˜๋งˆํฌ ์ฐจํŠธ ์ถ”๊ฐ€ ab. PHP-FPM ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•‰์•„์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ํฌ์ƒํ•˜๋ฉด์„œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ž์‹ ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์˜ต์…˜์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค.

PHP-FPM ์„ค์ •: ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด pm static ์‚ฌ์šฉ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€