node.js - Nastavenie limitu výkonu CPU pri použití npm run build v create-react-app (Docker)
Narazil som na problém s výkonom pri scrapovaní projektu. Snažím sa zostaviť aplikáciu príkazom npm run build vo svojej aplikácii vytvorenej s create-react-app --template typescript a moje CPU je >= 100% zaťažené.
Už som skúsil nastaviť možnosti pre node:
npm run build --node-flags --max-old-space-size = 4096react-scripts build --max-old-space-size = 4096Ale toto nijak nepôsobilo na nastavenie limitov zaťaženia procesora (hoci som menil RAM), pravdepodobne som len nenašiel parameter node --v8-options alebo robím niečo zle.
Globálny problém je, že pri nasadzovaní cez Docker je všetko nastavené a zhromaždené, takmer všetky zdroje sú odobraté z virtualizačného kontajnera.
Ponúkli mi možnosť nastaviť limity zostavenia (som iba front-end vývojár, takéto detaily ešte nepoznám)
Len pre istotu, môj package.json:
{
"name": "frontend",
"version": "0.1.0",
"private": true,
"dependencies": {
"@date-io/date-fns": "^1.3.13",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "^4.0.0-alpha.56",
"@material-ui/pickers": "^4.0.0-alpha.12",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/jest": "^26.0.15",
"@types/node": "^12.0.0",
"@types/react": "^16.9.53",
"@types/react-dom": "^16.9.8",
"@types/react-redux": "^7.1.9",
"@types/react-router-dom": "^5.1.6",
"@types/redux": "^3.6.0",
"axios": "^0.21.0",
"date-fns": "^2.0.0-beta.5",
"materialui-daterange-picker": "^1.1.92",
"node-sass": "^4.14.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-redux": "^7.2.2",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.0",
"redux": "^4.0.5",
"reselect": "^4.0.0",
"typescript": "^4.0.3",
"uuid": "^8.3.1",
"web-vitals": "^0.2.4"
},
"scripts": {
"start": "env-cmd -f .env react-scripts start",
"build": "env-cmd -f .env node_modules/react-scripts/bin/react-scripts.js build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@types/uuid": "^8.3.0",
"env-cmd": "^10.1.0",
"eslint-plugin-react-hooks": "^4.2.0",
"redux-devtools": "^3.7.0",
"redux-devtools-dock-monitor": "^1.2.0",
"redux-devtools-log-monitor": "^2.1.0"
}
}
OS Linux Ubuntu 20.04 (Nginx) CPU: Intel Core I5 8. generácie RAM: 8GB DDR3
Docker :
FROM nginx:1.18.0-alpine
EXPOSE 80
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
RUN apk add --update nodejs nodejs-npm bash
COPY package.json /app/package.json
COPY package-lock.json /app/package-lock.json
COPY src /app/src
COPY public /app/public
COPY tsconfig.json /app/tsconfig.json
RUN cd app && npm ci
ENV server_host=- \
server_port=-
ENTRYPOINT bash -c 'printf "REACT_APP_BACKEND=http://${server_host}:${server_port}" > /app/.env; \
cd app;\
npm run build;\
cp -a build/. /usr/share/nginx/html;\
nginx -g "daemon off;"'
Aplikácia funguje dobre. Problém je v zaťažení procesora. Niekoľko procesov sa vytvára pri 200% zaťažení. Ako to môžete opraviť? (aj keď zostavenie aplikácie trvá dlhšie, hlavná vec je, že procesorové zdroje nevyužíva viac ako na 50%)
Ďakujem za akúkoľvek spätnú väzbu a akúkoľvek pomoc