TIL/Node.js, express
Node.js/Express) PM2 ์ฌ์ฉ๋ฒ, ์ฝ์ด์ ์ฐ๋ ๋ <TIL_2022_08_05>
Dev_to_freedom
2022. 8. 5. 17:48
1. PM2
[NODE] ๐ PM2 ๋ชจ๋ ์ฌ์ฉ๋ฒ - ํด๋ฌ์คํฐ / ๋ฌด์ค๋จ ์๋น์ค
- pm2๋ node.js ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ Process Manager์
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋์ธ node.js๋ฅผ ๋ฉํฐ ์ค๋ ๋๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค.
- pm2 start ์ค์ ํ์ผ ๋ช (๋ณดํต ecosystem.config.js)์ผ๋ก ์คํ
- ๋ง์ฝ ์๋ฒ๊ฐ 8์ฝ์ด 16์ค๋ ๋๋ผ๋ฉด, ์ต๋ 16๊ฐ ์ฝ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๋ ธ๋๊ฐ ์ฑ๊ธ ์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ํ์ฉ์ ๋ชปํ๋ ๋ฌธ์ → ‘ํด๋ฌ์คํฐ ๋ชจ๋'์ ํตํด ๋จ์ผ ํ๋ก์ธ์ค๋ฅผ ๋ฉํฐ ํ๋ก์ธ์ค๋ก ๋๋ฆด ์ ์๋ค. (๋ง์คํฐ ํ๋ก์ธ์ค์์ ์ฝ์ด ์๋งํผ ์์ปค ํ๋ก์ธ์ค๋ฅผ ์์ฑํด์ ๋ชจ๋ ์ฝ์ด๋ฅผ ์ฌ์ฉํ๊ฒ ํจ.)
- ๊ทธ๋ฌํ ํด๋ฌ์คํฐ ๋ชจ๋์ ๊ด๋ฆฌ๋ฅผ ํธ๋ฆฌํ๊ฒ ํด์ฃผ๋๊ฒ pm2
pm2์ ๊ธฐ๋ฅ
- ์๋น์ค ์๋ฒ๊ฐ ์ค์ง๋ผ๋ ๋ค์ ์ผ์ค
- ๋ฉํฐ์ฝ์ด, ํ์ดํผ ์ค๋ ๋ฉ ์ง์
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ด ์ฌ๋ ์์ฒญ์ ์์์ ์ฌ๋ฌ ๋ ธ๋ ํ๋ก์ธ์ค์ ๋ถ๋ฐฐ (๋ก๋ ๋ฐธ๋ฐ์ฑ)
- ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋จ → ๋ฌด์ค๋จ ์๋น์ค
pm2 ๊ฐ๋ฐ/๋ฐฐํฌ ํ๊ฒฝ ์คํ ๋ถ๋ฆฌ
apps: [
{
// ๋ฐฐํฌ ํ๊ฒฝ์ฉ ์๋ฒ
name: "superconnector-prod",
script: "./app.js",
instances: "-1",
exec_mode: "cluster", // ํด๋ฌ์คํฐ ๋ชจ๋. default="fork"
env_prod: {
NODE_ENV: "production",
PORT: 3000,
},
},
{
// ๊ฐ๋ฐ ํ๊ฒฝ์ฉ ์๋ฒ
name: "superconnector-dev",
script: "./app.js",
instances: "1", // ๋จ์ผ ์ค๋ ๋
exec_mode: "cluster",
env_dev: {
NODE_ENV: "development",
PORT: 3000,
},
},
],
ecosystem.config.js์ ์์ ๊ฐ์ด ์ ๋ ฅํ ํ, package.json ํ์ผ์์ scripts ์์ญ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
"scripts": {
"start": "pm2 start ecosystem.config.js --only superconnector-prod --env=prod",
"test": "echo \\"Error: no test specified\\" && exit 1",
"dev": "pm2 start ecosystem.configjs --only superconnector-dev --env=dev"
},
—only : ecosystem.config.js ํ์ผ์์ name๊ฐ์ ์ง์ ํด์ ์คํ
—env : env์ค์ ๋ค์ ์คํ
์ดํ ์์์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ์คํํ๋ค.
npm start : ๋ฐฐํฌ ํ๊ฒฝ์ผ๋ก pm2 ์คํ
npm run dev : ๊ฐ๋ฐ ํ๊ฒฝ์ผ๋ก pm2 ์คํ
2. ์ฝ์ด, ์ฐ๋ ๋
์ฝ์ด
- CPU์ ํต์ฌ์ ์ธ ์ญํ ์ ์ํํ๋ ์ค์ฌ๋ถ
- ์์คํ ์ ๋ชจ๋ ์ฐ์ฐ์ ์ฒ๋ฆฌ
- ๋์ผ์ฝ์ด, ์ฟผ๋์ฝ์ด ๋ฑ ์ฝ์ด๋ฅผ ๋๋ฆผ์ผ๋ก์จ ๋ ๋ง์ ์ฐ์ฐ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ
์ฐ๋ ๋
- ์ฝ์ด๊ฐ ๋ฌผ๋ฆฌ์ ์ธ ๊ฐ๋ ์ด๋ผ๋ฉด ์ฐ๋ ๋๋ ์ํํธ์จ์ด์ ์ธ ๊ฐ๋
- ex) ์ธํ ์ ๊ฒฝ์ฐ ํ์ดํผ์ฐ๋ ๋ฉ์ด๋ผ๋ ๊ธฐ์ ๋ก ์ฝ์ด์ ๊ฐฏ์๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ผ๋ก ์ชผ๊ฐ ์์ ์ฒ๋ฆฌ๋์ ๋๋ฆผ
ํ์ดํผ ์ฐ๋ ๋ฉ
: ํ๋์ ์ฝ์ด์ ์ฐ๋ ๋๋ฅผ ๋ ๊ฐ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ.