Home Node.js, NPM, etc...
Post
Cancel

Node.js, NPM, etc...

node.js

특징

  • javascript 기반(V8 엔진) 런타임
  • Event 기반
  • Non-blocking I/O 모델(libuv)
  • npm을 통한 라이브러리 제공
  • Single thread 기반

Event 기반?

  • Event listener에 callback 함수를 등록해 놓음
  • Event 발생 시 callback 함수가 호출됨
  • 여러 event가 동시 발생 시, event loop가 순서 판단

event loop?

  • event 발생 시 호출할 callback 함수들을 관리
  • 호출된 callback 함수의 실행 순서를 결정
  • Node.js가 종료될 때 까지 실행됨

Task queue?

  • callback 함수들이 대기중인 공간
  • callback queue

Background?

  • 타이머, I/O 작업 callback, event listener가 대기하는 공간

Non-blocking I/O?

  • 비동기가 이와 유사함
  • 함수를 background로 보내는 것
  • Background —> Task queue –[이 때, 다른 함수들은 동작]-> Call stack
  • setTimeout(function, 0)을 통해 코드를 Non-blocking화 가능 0초로 두긴 했으나, browser 4ms, Node.js 1ms의 지연 시간 존재함

pm2

설치

1
2
npm install pm2 -g
pm2 version

Node.js Server를 pm2로 실행

1
2
### 다음과 같이 할 경우, example이란 이름으로 app이 실행된다
pm2 start app.js --name "example"

정지

1
pm2 stop <id|name>

목록 보기

1
2
3
4
### 전체 리스트 보기
pm2 list
### 상세 내역 확인
pm2 show <id|name>

재부팅

1
2
3
pm2 restart <id|name>
### 전체 재부팅
pm2 restart all

로그 확인

1
pm2 logs <id|name>

모니터링

1
pm2 monit

python app 실행하기

1
pm2 start {app_file_name} --interpreter=python

재부팅 했을 때, list가 저장이 안됐을 경우

1
2
3
4
pm2 update
pm2 dump
pm2 save
pm2 resurrect

npm

1
2
### prefix 붙여서 npm 실행(child directory 내 npm 실행 시)
npm start --prefix path/to/your/app

Socket.io?

내용 추가

참조 링크

PM2로 프로세스 관리

Socket.io

This post is licensed under CC BY 4.0 by the author.

Pandas 사용법

MongoDB의 메모리 사용량이 과도할 경우 해결 방법(Ubuntu)