Keep-Alive Header
Keep Alive ๋?
HTTP protocol์์ client์ server ๊ฐ ์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์
ํ๋์ TCP ์ฐ๊ฒฐ
์ ํตํด ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋คHTTP๋ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค client์ server ๊ฐ ์๋ก์ด TCP ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ , ์๋ต์ ๋ฐ์ ํ์ ์ฐ๊ฒฐ์ ๋ซ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค
์ด๋ก ์ธํด ์์ฒญ๋ง๋ค ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ํด์ ํ๋ overhead๊ฐ ๋ฐ์ํ๋ฏ๋ก, ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์๋ค
Keep-Alive๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ ๋ ๋งค์ปค๋์ฆ์ผ๋ก, client์ server ๊ฐ์ ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์ ๋์ผํ ์ฐ๊ฒฐ์ ํตํด ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ค
client๊ฐ ์์ฒญ์ ๋ณด๋ผ ๋
"Connection: keep-alive"
header๋ฅผ ํฌํจ์ํค๋ฉด, server๋ ์ฐ๊ฒฐ์ ๋ซ์ง ์๊ณ ์ฌ๋ฌ ์์ฒญ์ ๋ํด ์๋ต์ ๊ณ์ ๋ณด๋ผ ์ ์๋ค
HTTP/1.1
๋ถํฐ๋ ์ด๋ฏธ ์ฐ๊ฒฐ๋์ด ์๋ TCP ์ฐ๊ฒฐ์์ฌ์ฌ์ฉ
ํ๋Keep-Alive
๋ผ๋ ๊ธฐ๋ฅ์ Default๋ก ์ง์ํ๋ค3-ways-handshake
๊ณผ์ ์ด ์๋ต๋๋ฏ๋ก์ฑ๋ฅ ํฅ์
์ ๊ธฐ๋ํ ์ ์๋ค์ฐ๊ฒฐ ์ค์ ๊ณผ ํด์ ์ ๋ฐ๋ฅธ overhead ๊ฐ์ ๋ฐ network ์ง์ฐ ์๊ฐ์ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์ ์ํฌ ์ ์๋ค
Keep Alive ํน์ง
Keep-Alive
์ ์ง ์๊ฐ
์ ์ฐ๊ฒฐ๋socket
์ I/O access๊ฐ ๋ง์ง๋ง์์ข ๋ฃ๋ ์์ ๋ถํฐ ์ ์๋ ์๊ฐ
๊น์ง access ๊ฐ ์๋๋ผ๋session
์ ์ ์งํ๋ ๊ตฌ์กฐ์ด๋ค์ฆ, ์ ์๋ ์๊ฐ ๋ด์ access ๊ฐ ์ด๋ฃจ์ด ์ง๋ค๋ฉด ๊ณ์ ์ฐ๊ฒฐ๋ ์ํ๋ฅผ ์ ์งํ ์ ์๊ฒ ๋๋ค
Keep-Alive header๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Connection header๋
keep-alive
๋ก ์ค์ ๋์ด์ผ ํ๋คbut, HTTP/2์์๋ ๋ฌด์๋๊ณ , ์ฐ๊ฒฐ ๊ด๋ฆฌ๋ ํด๋น ํ๋กํ ์ฝ ๋ด์์ ๋ค๋ฅธ ๋งค์ปค๋์ฆ์ ์ํด ์ฒ๋ฆฌ๋๋ค
Event-driven
๊ตฌ์กฐ์ฌ์non-blocking
์ ์ฌ์ฉํ๋Nginx
๋ฑ์Keep-Alive
๋ฅผ ํ๋ฉด์๋Thread
๋ฅผ ์ ์ ํ์ง ์๊ธฐ ๋๋ฌธ์๋์ ์ฒ๋ฆฌ
์ ์ ๋ฆฌํ๋ค
Keep-Alive timeout์ ์ค์ ํ๋ ์ด์
์๋ฒ ์์์ ๋ฌดํ์ ์ด ์๋๋ค
์ ์์ ๊ณ์ ์ ์งํ๋ ๊ฒ์ server์ ์์ค์ ๋ฐ์์ํจ๋ค
์ฆ, server์ ์ฐ๊ฒฐ์ ๋งบ์ ์ ์๋
socket
์ ํ์ ๋์ด ์๊ณ , ์ฐ๊ฒฐ์ด ์ค๋ ์ง์๋๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฐ๊ฒฐ์ ๋ชปํ๊ฒ ๋๋ ์ํฉ์ด ๋ฅ์น๋ค
HTTP/1.0+ ์ HTTP/1.1 ์์์ Keep-Alive
1.0+
์์๋ Keep-Alive๋ฅผ์ฌ์ฉํ๊ธฐ ์ํด
์ค์ ์ ํด์ผํ๋ค๋ฉด,1.1
์์๋ Keep-Alive๋ฅผ๋๊ธฐ ์ํด
์ค์ ์ ํด์ผํ๋ค์ฆ, ์ค์ ์ ๋ชฉ์ ์ด ์ฌ์ฉํ๊ธฐ ์ํจ์ด๋ ๋๊ธฐ ์ํจ์ด๋๋ก ์๊ฐํ๋ฉด ๋๋ค!
Last updated