์๋
ํ์ธ์ :
๋๋ ํ๋ผ์คํฌ + gunicorn์ ์ฌ์ฉํ์ฌ API ์๋น์ค๋ฅผ ๋ง๋ญ๋๋ค. ์์
์ ํ๋ก์ธ์ ๊ฐ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ gunicorn.conf์์ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํํ๊ณ "gunicorn -c gunicorn.conf"๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฃํฉ๋๋ค. gunicorn.conf์ ๋ชจ๋ ๋ฐ์ดํฐ๋ ํ ๋ฒ๋ง ์ํ๋๋ฏ๋ก ๋ชจ๋ ์์
์ ํ๋ก์ธ์๋ ๊ณตํต์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ด ํ๋ก๊ทธ๋จ์ ๋น
๋ฐ์ดํฐ๋ ์ฐ๊ธฐ ์์
์์ด ์ค๋น๋ง ๋์ด ์์ต๋๋ค. ํ์ง๋ง ์๋น์ค๋ฅผ ์์ํ๊ณ ์ค๋ซ๋์ ์คํํ๋ฉด ๊ฐ์๊ธฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ 1G ์ฆ๊ฐํฉ๋๋ค. gunicorn์์ ์ฐ๊ธฐ ์์
์ด ์์คํ
์ ๊ธฐ๋ก ์ค ๋ณต์ฌ ๋ฉ์ปค๋์ฆ์ ์ผ์ผํค๋ ์์ธ์ด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์
์ ํ๋ก์ธ์ ๊ฐ์ ๋น
๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๋๋ ์ฌ์ ํ ์ด ๋ฌธ์ ์ ๋ํด ํผ๋์ค๋ฌ์ํฉ๋๋ค. ๊ทํ์ ํ์ ์ ๊ธฐ๋ํ์ญ์์ค!!! ๊ฐ์ฌํฉ๋๋ค!
์ด๊ฒ์ #1640๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ์ ์ผํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ Python ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํผํ๋ ๊ฒ์ ๋๋ค. ์๋ง๋ mmap ๋ชจ๋ ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฌํฉ๋๋ค!!! ๋งค์ฐ ๋์์ด ๋ฉ๋๋ค!
์๋
ํ์ธ์:
์๋ ค์ฃผ์ ์ ๋ณด๋ก ์ ๋ ํ์ด์ฌ์ 2.7์์ 3.7๋ก ์
๊ทธ๋ ์ด๋ํ๊ณ gc.freeze()๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ์์ง๋ ์ผ๋ถ ๊ฐ์ฒด๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ฒ์๋ "๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ์๊ธฐ 1G ์ฆ๊ฐ"ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง ์์ง๋ง ๊ฐ ํ์ ํ๋ก์ธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 500M ์ด์ ์ฆ๊ฐํ ๋ค์ ์ฑ์ฅ์ ์ค์งํ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฒ์ฒํ ์ฆ๊ฐํฉ๋๋ค. ๋๋ gc.freeze() ๊ฐ ์๋ํ๊ณ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ์์ ๋ง๋ ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ํ ์ผ์ด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ #1640๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ์ ์ผํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ Python ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํผํ๋ ๊ฒ์ ๋๋ค. ์๋ง๋ mmap ๋ชจ๋ ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.