IT

[Erlang OTP]죽지 않는 서버 만들기(2) (feat. supervisor)

raLee 2018. 6. 10. 08:00
반응형

이번 포스팅에서는 슈퍼비전 트리에 하위 워커로 추가되는 자식 프로세스들의 정보에 대해 정리하려 한다. 슈퍼바이저의 동작, 설정에 대한 내용은 이전 포스팅에 있다.

2018/06/07 - [IT] - [Erlang OTP]죽지 않는 서버 만들기(1) (feat. supervisor)



Child Specification

슈퍼바이저의 하위 워커로 등록되는 자식 프로세스들은 다음과 같은 정보를 가진다.

<필수로 가져야 하는 정보>

1. id : 슈퍼바이저가 자식 프로세스의 정보를 식별할 때 사용된다.


2. start : 자식 프로세스를 시작할 때 호출하는 정보를 정의한다. 이 자식 프로세스를 시작하면 실행할 함수의 모듈명-함수명-파라미터가 들어간다.


<부가 정보> - 가져도되고 안가져도 됨

3. restart : 언제 자식 프로세스가 재시작되는지에 대한 설정값이다. permanent | temporary | transient 가 있는데,  default 값은 permanent다. permanent는 항상 재시작, temporary는 절대로 재시작되지 않음, transient는 normal이나 shutdown이 아닌 다른 이유로, 즉 비정상 종료가 되었을 경우에만 재시작한다.


4. shutdown : 자식 프로세스가 어떻게 종료될지에 대한 설정값이다. brutal_kill | interger time-out value | infinity 가 있다. brutal_kill은 자식 프로세스가 exit(Child, kill)로 종료되는 것을 의미하고 타임아웃 값의 정수가 입력될 경우에는 exit(Child, shutdown)을 보낸 후, 입력된 시간동안 exit signal이 돌아오기를 기다린다. exit signal이 돌아오지 않는 경우에는 exit(Child, kill)로 종료한다. infinity는 자식 프로세스가 또 다른 슈퍼바이저일 경우 하위 프로세스들을 종료시킬 시간을 충분히 주기 위해 사용하는데, 일반적인 워커 프로세스에도 적용할 수 있다. 하지만 이 경우 슈퍼비전 트리의 종료가 이 워커 프로세스에 달려 있으므로 주의해서 사용해야 한다. default값은 일반적인 워커 프로세스일 경우 5000, 슈퍼바이저일 경우에는 infinity다.


5. type : 자식 프로세스가 일반적인 워커인지 슈퍼바이저인지에 대한 값이다. worker | supervisor 가 있고, default값은 worker다.


6. modules : [Module] | dynamic 이 있는데, 자식 프로세스가 supervisor, gen_server, gen_statem일 경우 콜백모듈의 이름이 리스트 형태로 들어가고, gen_event일 경우에는 dynamic 키워드가 들어간다. default값은 [Module]인데, start에 들어간 모듈명이 리스트 형태로 들어간다. 



자식 프로세스 정보 끝!!

다음 포스팅은

샘플 코드 구현하기!! 

반응형