2014-04-16 2 views
1

여기에서 볼 수 있듯이 데이터베이스 "연결 제한"무엇 :데이터베이스 연결 제한이란 무엇이며 ActiveRecord는 어떻게 처리합니까?

https://addons.heroku.com/marketplace/heroku-postgresql

나는 데이터베이스와 100 개 요청이 데이터베이스 연결 제한에 와서 않는 방법 같은 시간에 만들어진 쿼리 루비 응용 프로그램이있는 경우 놀이?

80 개의 요청이 거부 되었습니까? 대기 중입니까?

각 쿼리는 별도의 Connection입니까? 아니면 단일 쿼리로 여러 쿼리를 처리합니까?

ActiveRecord를 사용하고 있습니다. 미리 감사드립니다!

답변

1

여기서 연결 제한은 데이터베이스에 대해 열 수있는 백엔드 연결의 최대 수를 의미합니다.

예에서 개수는 응용 프로그램의 동시성에 따라 다릅니다. 응용 프로그램이 단일 스레드이고 1 dyno를 사용중인 경우 해당 요청은 순차적으로 처리되며 1 개의 데이터베이스 연결 만 사용합니다.

4 명의 근로자와 함께 유니콘 (Unicorn)과 같은 것을 사용하는 경우 약 4 개의 데이터베이스 연결입니다.

이 DevCenter는 연결에 확장 :

2

액티브 레코드는 데이터베이스 연결의 데이터베이스 connections.A 풀을 생성 한 후 응용 프로그램간에 공유되는 관리 스레드를 통해 연결 풀링 메커니즘을 사용하는 데이터베이스에 액세스해야합니다. 응용 프로그램에 데이터베이스 액세스가 필요할 때 풀에서 연결을 요청합니다. 작업이 완료되면 풀에 연결을 반환하고 다른 응용 프로그램이나 요청에서 사용할 수있게됩니다. 활성 레코드는 connectionpool 클래스를 통해 구현되며 스레드로부터 안전합니다. 당신의 예제에 따라 연결 수가 계속되고 풀이 가득 차면 대기열에 넣고 시간 초과가 설정됩니다. 요청이 완료되면 다른 요청이 처리됩니다. 기본적으로 연결 풀은 5로 설정되고 시간 초과는 5 초입니다.

관련 문제