패신저는 프로세스를 관리하는 역할을 한다. 그리고 HTTP Request를 라우팅처리해준다.
패신저에서 프로세스란 개념은 무엇일까?
레일즈 애플리케이션 인스턴스를 하나 실행시킨걸, 패신저의 프로세스로 보면 될 것 같다.
레일즈 인스턴스를 하나 띄어놓는 것은 패신저가 프로세스를 하나 띄어놓는 것과 같다.
그리고 레일즈 인스턴스를 하나 죽이는 것은, 패신저가 프로세스를 하나 죽이는 것과 같다.
패신저의 프로세스 개념에서 알아둬야하는건 뭘까?
각 프로세스의 메모리는 다른 프로세스들과 분리된 영역이다.
프로세스 A에서 power_blogger='rails_blogger' 라고 변수를 할당해놔도,
프로세스 B에서는 power_blogger라는 변수를 가져다가 사용할 수 없다.
프로세스들끼리 데이터를 공유하려면 어떻게 해야할까?
데이터베이스, Redis, Memcached 같은 데이터 저장소를 별도로 사용해야한다.
프로세스가 크래시나도 다른 프로세스에 영향을 주지 않는다
어플리케이션에서 에러가 나거나, 프로세스에 문제가 생겨서 크래시가 발생하면
패신저는 그 프로세스를 재시작해준다.
각 프로세스들이 독립적으로 관리되기 때문에 다른 프로세스에는 영향을 주지 않는다.
패신저에서는 프로세스의 뭘 관리하지?
프로세스 감독하기
크래시가 난 프로세스를 재시작해주고, 요청이 다른 프로세스에서 잘 처리되도록 감독 / 관리해준다.
로드밸런싱
트래픽이 들어왔을 때, 어느 프로세스에서 요청을 처리하게할지 로드밸런싱하는 역할을 한다.
동적으로 프로세스 갯수 관리하기
그리고 요청이 많이 들어오면 프로세스를 더 많이 만들고, 적게 들어오면 프로세스를 죽이는 역할을 한다.
참고 자료
Pushion Passenger - Process Manager
'소프트웨어-이야기 > 인프라' 카테고리의 다른 글
[AWS]beanstalk에서 로그 확인하기 (5) | 2017.10.28 |
---|---|
[AWS]Athena 사용 팁 (4) | 2017.08.01 |
(Phusion Passenger) 코드 reload하기 (1) | 2017.06.29 |
(Phusion Passenger) 패신저에서 트래픽을 어떻게 분산시켜줄까? (2) | 2017.06.27 |
(Phusion Passenger) Rails + Nginx 최적화를 위한 설정값 (4) | 2017.06.26 |