2016-07-25 4 views
0

저는 업계에서 일반적으로 사용되는/우수 사례를 찾고 있습니다.데이터베이스 연결이 끊어 질 때 문제를 처리하는 방법은 무엇입니까?

다음 가상 시나리오를 가정 해 보겠습니다. 내 응용 프로그램 서버가 200 개의 사용자 요청을 받아들이고 각각에 DB 액세스가 필요한 경우. 하지만 내 DB max_connections는 100입니다.

200 명의 사용자가 동시에 요청했지만 100 개의 max_connections 만 있으면 최대 연결을 처리하지 못한 다른 요청은 어떻게됩니까? 현실 세계에서

:

  1. 100 개 요청이 애플 리케이션 서버의 큐의 일종에 저장하고, DB 연결을 기다리게 될 남아있는 것인가?

  2. 오류가 있습니까? 데이터베이스 서버는 100 개 연결을 처리 할 수 ​​있으며, 웹 연결의 모든 경우

답변

0

기본적으로, "데이터베이스 액세스를 필요로,"당신은 더 이상 100 개 요청이 활성에서 할 수 없는지 확인해야합니다 어느 순간.  이 시나리오의 “ 규칙 제한 ”입니다. 대기열 이러한 요청 (100 개) 활성 요청의 제한이되지 않도록  는

당신은 서버에 "(200)까지 동시 연결을"받아 들일 수 있습니다 (이. 많은 중 하나가 될 수 있음),하지만 당신은해야합니다 초과했습니다.

로드 밸런서, 응용 프로그램 서버, 심지어 Apache/nginix 지시어까지 여러 가지 방법이 있습니다.  . 때로는 웹 페이지가 병렬로 작업하는 많은 다른 서버들 사이에서 분리 된 프로세스의 프론트 엔드에 불과합니다. 어떻게하는지에 상관없이, 얼마나 많은 요청이 활성 상태인지를 규제하고 나머지를 대기열에 넣는 방법이 있어야합니다.

은 또한 당신이 당신의 웹 서버에 “ 200 활성 연결 ”가있을 수 있습니다에도 불구하고 점에 유의, 이러한 클라이언트 “ 모두 200 정확하게 동시에 마우스를 클릭 할 가능성이 매우 낮다. ”   요청이 임의의 속도로 전송되기 때문에 전혀 지연이 발생하지 않을 수 있습니다. 그럼에도 불구하고 시스템은 최악의 상황을 처리하도록 설계되어야합니다.

관련 문제