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?
내용 추가