nodeJS - process


process 객체는 현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있습니다.

  • process.env : 시스템의 환경 변수로 노드에 직접 영향을 미치기도 한다.
> process.env

// 환경 변수 이름 = 값
NODE_OPTIONS = --max-old-space-size=8192
// 노드를 실행할 때의 옵션들을 입력받는 환경 변수
UV_THREADPOOL_SIZE = 8
// 사용하는 스레드풀의 스레드 개수를 조절
  • process.env는 임의로 환경 변수 저장 가능. 서비스의 중요한 키를 저장하는 곳으로도 사용. 서버나 데이터베이스의 비밀번호와 각종 API키를 코드에 직접 입력하는 것은 위험하다. (서비스가 해킹 당해 코드가 유출되었을 때 비밀번호가 코드에 남아있어 추가 피해가 발생할수 있기 때문에) 따라서 **중요한 데이터(비밀번호 등)은 process.env 속성으로 대체한다.
const secretID = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE;

// 이제 process.env에 직접 SECRET_ID와 SECRET_CODE를 넣으면 된다. 
  • process.nextTick(콜백) : 이벤트루프가 다른 콜백함수들보다 nextTick의 콜백 함수를 우선 처리한다.
setImmediate(()=>{
    console.log('immediate');
})

nextThick(()=>{
    console.log('nextTick');
})

setTimeout(()=>{
    console.log('timeout');
} 0);

Promise.resolve().then(() => console.log('pormise'));
  • 실행 결과 : 마이크로 태스크(process.nextTick과 resolve된 Promise 우선 실행)
// process.nextTick은 setTimeout과 setImmediate 보다 우선 실행 
nextTick
// resolve된 Promise도 다른 콜백 함수들보다 우선시.
pormise
timeout
immediate
  • 마이크로 태스크 주의 사항 비동기 처리시 setImmediate 보다 process.nextTick을 선호하는 개발자도 있지만 마이크로 태스크(setImmediate, process.nextThick)를 재귀호출 하게되면 이벤트 루프는 다른 콜백 함수보다 마이크로 태스크를 우선 처리하므로 콜백 함수들이 실행되지 않을 수 있다.

  • process.exit : 실행중인 노드 프로세스 종료. 서버 환경에서 process.exit를 사용하면 서버가 멈추므로 특수한 경우를 제외하고는 서버에서 잘 사용하지 않는다. 하지만 서버외 독립적인 프로그램에서는 수동으로 노드를 멈추기 위해 사용.

let i = 1;
setInterval(() => {
    if(i===5){
        console.log('종료!');
        process.exit();
    }
    console.log(i);
    i +=1 ;
}, 1000);

// 1
// 2
// 3
// 4
// 종료!
  • ETC
// 설치된 노드의 버전
> process.version
'v12.19.0' 

// 프로세서 아키텍처 정보
> process.arch
'x64'

// 운영체제 플랫폼 정보
> process.platform
'darwin'

//현재 프로세스 아이디
> process.pid
163

// 프로세스가 시작된 후 흐른 시간 (단위: 초)
> process.uptime
[Function: uptime]

// 노드의 경로
> process.execPath
'/usr/local/bin/node'

// 현재 프로세스가 실행되는 위치
> process.cwd()
'/Users/Desktop/Node JS'

// 현재 CPU 사용량
> process.cpuUsage
[Function: cpuUsage]





© 2020.11. by creamer

Powered by CREAMer