2013-03-27 2 views
6

레일 3.2+ 유니콘 + 포스트그레스 DB를 사용하고 있습니다. 유니콘이 DB 연결을 어떻게 처리합니까?유니콘이 DB 연결을 닫지 않습니다.

는 이해 방법 :

  1. 유니콘 마스터 프로세스 포크 X의 자식 프로세스를.
  2. 각 하위 프로세스 설정 DB 연결 - before_fork에서 닫고, after_fork에서 연결을 설정하십시오.
  3. 우리는 프로세스마다 연결을 사용합니다 (레일스 DB 연결 풀링을 사용하는 경우 프로세스 당 DB 연결 (데이터베이스 연결)에서 Y를 만듭니다) - 즉 프로세스가 작동하면 (우리가 죽이지 않을 때까지 항상 작동합니다) 모든 웹 요청은 동일한 연결 (after_fork에서 열렸습니다)을 사용합니다.
  4. 열려있는 연결은 유휴 상태 또는 활성 상태로 포스트그레스 (또는 다른 DB)에 표시됩니다.

맞지 않니 없습니까?

답변

8

네 말이 맞습니다. unicorn.conf에서 "worker_processes 5"를 설정하고 database.yml에서 "pool : 4"를 설정하면 데이터베이스에 20 개의 연결을 만듭니다.

3

나는 Eric Wong에게 유니콘 쥬얼리의 창시자라고 썼다. 그는 그것이 옳았다는 것을 확인했다.