- 목차
✔️Process
Node.js 는 운영체제에도 접근할 수 있다.
터미널에서 node
를 입력하면 노드 프로세스가 실행된다.
process.version
: 설치된 노드의 버전process.arch
: 프로세서 아키텍처 정보process.platform
: 운영체제 플랫폼 정보. linux나 darwin, freebsd 등의 값일 수 있음process.pid
: 현재 프로세스의 아이디. 프로세스를 여러 개 가질 때 구분할 수 있음process.uptime()
: 프로세스가 시작된 후 흐른 시간, 초 단위,- 프로세스 시작 후 몇 초 후에 프로세스를 종료한다거나 하는 일이 가능한 듯
process.execPath
: 노드의 경로- C:\Program Files\nodejs\node.exe
process.cwd()
: 중요! 현재 프로세스가 실행되는 위치- C:\Users\뭐시기
process.cpuUsage()
: 현재 cpu 사용량
📌process.env
시스템 환경 변수들이 들어있는 객체다.
windows 사용자라면 이런거 많이 봤을 것이다.
시스템에서 쓰이는 것들이 나온다.
환경 변수는 process.env
로 접근이 가능한데
보통 비밀키(DB 비밀번호, 서드파티 앱의 키 등)을 보관하는 용도로 많이 쓰인다.
const secretId = process.env.SECRET_ID;
요런식으로
일부 환경 변수들은 노드 실행 시 영향을 미치는 것들도 있다.
NODE_OPTIONS
는 노드 실행 옵션을 설정할 수 있는데
처음에 노드가 실행될 때 메모리를 적게 사용하기 때문에 실행중에 메모리 초과로 서버가 펑 죽는 경우도 있다고 한다.
NODE_OPTIONS=__max-old-space-size=8192
이런식으로 노드가 사용할 수 있는 메모리 공간을 늘려서 지정할 수도 있다고 한다.
UV_THREADPOOL_SIZE
는 스레드 풀 개수를 설정할 수 있다.
백그라운드에서 동시에 돌려도 이 돌아가는 스레드 갯수가 보통 4개로 정해져 있다고 한다.
UV_THREADPOOL_SIZE=8
이런식으로 백그라운드에서 실행되는 스레드의 개수를 늘려줄 수도 있다고 한다.
📌process.nextTick()
이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선적으로 처리한다.
대표적으로 promise도 우선 순위가 높아서 다른 콜백 함수보다 얘를 우선으로 처리한다.
이렇게 우선순위가 있는 것들은 다른 콜백 함수보다 먼저 호출 스택으로 다시 넘어오지만 얘네들 간의 순서는 지켜진다.
참고로 Node.js 에서
setTimeout(() => {
console.log('timeout')
}, 0);
이것보다는 setImmediate()
를 사용하자.
📌process.exit(코드)
exit() 메서드의 전달 인자로 0 혹은 전달하지 않으면 현재 프로세스가 종료된다.
이 외의 값을 전달 인자로 전달했으면 에러로 인한 비정상 종료를 의미한다.