2011-12-29 2 views
7

unicorn에 대한 데이터베이스 연결 풀링 효과를 설명하는 문서를 찾을 수 없습니다.유니콘 레일 용 DB 연결 풀이 정말로 필요합니까?

유니콘은 여러 작업자 프로세스를 포크합니다. prefork을 구성 했으므로 작업자간에 데이터베이스 연결을 공유하지 않는 것이 중요하므로 포크 후에 db 연결을 재설정합니다.

내 레일 애플리케이션은 서버 당 8 명의 작업자를 가지고 있으며 database.yml의 풀 크기는 5입니다. 그런 다음 mysql에 45 개의 연결을 보았습니다.

각 작업자는 한 번에 하나의 요청을 처리하는 단일 스레드입니다. SQL 쿼리가 차단되어야합니다. 다른 4 개의 연결이 쓸모 없다고 보입니까? 더 나은 성능을 위해 풀 크기를 1로 설정할 수 있습니까?

답변

7

각 작업자는 한 번에 하나의 요청 만 제공 할 수 있으므로 각 작업자는 한 번에 하나의 연결 만 사용할 수 있으며 더 많은 연결을 통해 얻은 결과는 없습니다. 풀 크기를 1로 설정하면 각 유니콘 작업자가 하나의 연결을 열어야합니다. 당신은 눈에 띄는 성능 향상을 얻지 못할 것이지만 열린 커넥션을 줄임으로써 리소스를 절약 할 수 있습니다.