Apache
Apache ๊ฐ์ ๊ฒฝ์ฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด connection์ ์์ฑํฉ๋๋ค.ย ๊ทธ๋์ ์๋ก์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์๋ก์ด process๋ฅผ ์์ฑํ๋ค.
ย
ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๋ย PREFORK๋ผ๋ ๋ฐฉ์์ ์ด์ฉํ๋ค. ๊ทธ๋์ ์๋ก์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ค๋ฉด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ค. ๋ง์ฝ ๋ง๋ค์ด๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ์ถ๊ฐ๋ก ํ๋ก์ธ์ค๋ฅผ ์์ฑ.
ย
๊ตฌ์กฐ์ ์ฅ์
- ๋ค์ํ ๋ชจ๋์ ๋ง๋ค์ด์ ์๋ฒ์ ๋น ๋ฅด๊ฒ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค. โ ํ์ฅ์ฑ์ด ๋๋ค
- ๋์ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ํ๋์ ์๋ฒ์์ ํด๊ฒฐํ๊ธฐ ์ข๋ค.
ย
๊ตฌ์กฐ์ ๋จ์
- ์๋ฒ์ ๋์์ ์ฐ๊ฒฐ๋ connection์ด ๋ง์ ๋ ๋ ์ด์ ์๋ก์ด connection์ ์์ฑํ์ง ๋ชปํ๋ค.
- ์ด๋ฅผย C10K(connection 10000 problem)๋ฌธ์ ๋ผ๊ณ ํ๋๋ฐย connection 10000๊ฐ์ ๋ฌธ์ ๋ผ๋ ๋ป์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ
- connection์ด ์ฐ๊ฒฐ๋ ๋ ๋ง๋ค ํ๋ก์ธ์ค๋ฅผ ์์ฑ
- ๋ฌด๊ฑฐ์ด ํ๋ก๊ทธ๋จ
- ํ์ฅ์ฑ์ด ์ข๋ค๋๊ฒ์ ๋ฆฌ์์ค๊ฐ ๋ง๋ค๋ ๊ฒ์ ์๋ฏธ
- CPU ๋ถํ ์ฆ๊ฐ
- ๋ง์ connection ์์ฒญ์ด ๋ค์ด์ค๋ฉด Context Switching์ ๋ง์ด ํ๊ธฐ์ CPU ๋ถํ ์ฆ๊ฐ
ย
์ด๋ฌํ ๊ตฌ์กฐ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด Ngnix๊ฐ ๋ฑ์ฅํ์๋ค. โ ๋ก๋ ๋ฐธ๋ฐ์
Nginx
Nginx๋ ๊ฒฝ๋ ์น ์๋ฒ์ด๋ค. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์์ ๋ ์์ฒญ์ ๋ง๋ ์ ์ ํ์ผ์ ์๋ตํด์ฃผ๋
HTTP Web Server
๋ก ํ์ฉ๋๊ธฐ๋ ํ๊ณ , Reverse Proxy Server
๋ก ํ์ฉํ์ฌย WAS ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ผ ์ ์๋ ๋ก๋ ๋ฐธ๋ฐ์
๋ก ํ์ฉ๋๊ธฐ๋ ํ๋ค.ย
NGINX ํ๋ฆ
Nginx๋ย Event-Driven ๊ตฌ์กฐ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ํ ๊ฐ ๋๋ ๊ณ ์ ๋ ํ๋ก์ธ์ค๋ง ์์ฑํ์ฌ ์ฌ์ฉํ๊ณ ,๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์์ฒญ๋ค์ Concurrency ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. Nginx๋ ์๋ก์ด ์์ฒญ์ด ๋ค์ด์ค๋๋ผ๋ ์๋ก์ด ํ๋ก์ธ์ค์ ์ฐ๋ ๋๋ฅผ ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์(๋น๋๊ธฐ) ํ๋ก์ธ์ค์ ์ฐ๋ ๋ ์์ฑ ๋น์ฉ์ด ์กด์ฌํ์ง ์๊ณ ,์ ์ ์์์ผ๋ก๋ ํจ์จ์ ์ธ ์ด์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.์ด๋ฌํ Nginx์ ์ฅ์ ๋๋ถ์ ๋จ์ผ ์๋ฒ์์๋ ๋์์ ๋ง์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ย
- Nginx๋ ์ค์ ํ์ผ์ ์ฝ๊ณ , ์ค์ ์ ๋ง๊ฒย worker process๋ฅผ ์์ฑํ๋ย master process๊ฐ ์๋ค.
- worker process๋ย ์ค์ ๋ก ์ผ์ ํ๋ ํ๋ก์ธ์ค์ด๋ฉฐย worker process๊ฐ ๋ง๋ค์ด์ง ๋ ์ง์ ๋ listen ์์ผ์ ๋ฐฐ์ ๋ฐ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ผ์ย ์๋ก์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด connection์ ํ์ฑํ๊ณ ์ฒ๋ฆฌํ๋ค.
- connection์ ์ ํด์ง Keep-Alive ์๊ฐ๋งํผ ์ ์ง๋ฉ๋๋ค. ํ์ง๋งย connection์ด ํ์ฑ๋์๋ค๊ณ ํด์ย worker process๊ฐ ํด๋นย connectionย ํ๋๋ง ๋ด๋นํ์ง๋ ์๋๋ค.
- ํ์ฑ๋ย connection์ผ๋ก๋ถํฐ ์๋ฌด๋ฐ ์์ฒญ์ด ์๋ค๋ฉด ์๋ก์ดย connection์ ํ์ฑํ๊ฑฐ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ๋ค๋ฅธย connection์ผ๋ก๋ถํฐ ๋ค์ด์จ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
ย
Nginx์์๋ ์ด๋ฌํย connection ํ์ฑ๊ณผ ์ ๊ฑฐ, ๊ทธ๋ฆฌ๊ณ ย ์๋ก์ด ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ย ์ด๋ฒคํธ(event)๋ผ๊ณ ํ๋ค.
ย
์ด ์ด๋ฒคํธ๋ค์ย queue์ ๋ด๊ธด ์ํ์์ย ๋น๋๊ธฐ ์ํ๋ก ๋๊ธฐํ๊ณ , ย os์ปค๋์ดย queueํ์์ผ๋กย worker process์๊ฒ ์ ๋ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ย worker process๋ย ํ๋์ ์ค๋ ๋๋ก ์ด๋ฒคํธ๋ฅผ ๊บผ๋ด์ ์ฒ๋ฆฌํด ๋๊ฐ๋๋ค. ์ด๋ฐ ๋ฐฉ์์ย worker process๊ฐ ์ฌ์ง ์๊ณ ์ผ์ ํ๊ธฐ์, ์์ฒญ์ด ์์ ๋ ํ๋ก์ธ์ค๋ฅผ ๋ฐฉ์น์ํค๋ย Apache Server๋ณด๋คย ํจ์ฌ ํจ์จ์ ์ผ๋ก ์์์ ์ฌ์ฉํ ์ ์๋ค.
ย
ย
NGINX์ ์ฅ์
- ์ด๋ฒคํธ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์์ฒญ ์ ๊ณต
- ๋จ์ผ ์ค๋ ๋๋ฅผ ํตํด ์ฌ๋ฌ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ ํ๋ ํ๋์จ์ด ๋ฆฌ์์ค๋ก๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋์์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ
- ์ต์ํ์ ๋ฆฌ์์ค๋ก ์น ์๋ฒ์ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ๋ฆฝํ HTTP ์๋ฒ๋ก ๋ฐฐ์น ๊ฐ๋ฅ
NGINX์ ๋จ์
- ๋์ ์ปจํ ์ธ ์ฒ๋ฆฌ X
- ๋์ ์ฝํ ์ธ ์ ๋ํ PHP ๋ฐ ๊ธฐํ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ค๋ฉด NGINX GUI๋ฅผ ์คํํ๊ธฐ ์ํด ์ธ๋ถ ํ๋ก์ธ์๋ก ์ ๋ฌํ๊ณ ๋ ๋๋ง ๋ ์ฝํ ์ธ ๊ฐ ๋ค์ ์ ์ก ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผํ๋ค(ํ๋ก์ธ์ค ์๋ ์ ํ).
- ๋์ ์น ํ์ด์ง ์ปจํ ์ธ ๋ฅผ ๊ฐ์ง ๋ชจ๋ ์์ฒญ์ ์ํด ์ธ๋ถ ์์๊ณผ ์ฐ๊ณ(php-fpm)
ย
์ฐธ์กฐ
ย
Loading Comments...