Heroku + Rails에서 웹 dyno 1 개와 작업자 dynos 2 개로 아래 설정을했다고 가정합니다.(Heroku + Sidekiq) 연결 풀링의 올바른 작동 방식을 이해하고 있습니까?
다음은 내가 사실이라고 생각하는 것입니다. 나는 누군가가 이러한 진술을 확인하거나 잘못된 가정을 지적하기를 바랍니다.
나는 대부분 이것에 확신하지만 클라이언트와 서버의 사용법에 대해 조금 혼란 스럽습니다. DB와 Redis 연결을 모두 나타내는 "연결 풀"과 퓨마와 heroku dyno 노동자.
나는 맑은되고 싶어하고, 나는 이것이이
감사에 문제가 다른 초보자를위한 통합 가이드 역할을 할 수 있기를 바랍니다! 모든
(레일 응용 프로그램이 실행되는) 웹 다이노이 페이지를 봉사하기를 조회 할 필요가있을 때
작업자 다이노
- 만 DB와 상호 작용하는 Sidekiq 클라이언트입니다
- 단지에서 작업을 끌어 레디 스와 상호 작용 Sidekiq 큐 (Redis에 저장 됨). 그것은 Sidekiq 서버 (25)의 액티브 풀 크기가 각 다이노이 작업 할 25 개 연결이 있음을 의미
액티브 풀 크기입니다. (이. 내가 가장 확실 해요 무엇 각 다이노 각 푸마/Sidekiq 노동자인가?) 웹 동력계를 들어
, 한 번만 (2 퓨마에서 10 일 (스레드)를 실행할 수 있습니다 X 5 스레드), 최대 10 개의 스레드 만 소모합니다. 25는 필요한 것 이상입니다.
작업자 dynos의 경우 15의 Sidekiq 동시성은 15 개의 Sidekiq 프로세스가 한 번에 실행될 수 있음을 의미합니다. 다시 말하지만, 25 개의 연결이 필요 이상으로 길지 만, 오래되지 않거나 죽은 연결이 없어지면 좋은 버퍼가됩니다.
내 Postgres DB는 웹 dyno에서 10 개의 연결을, 15 개의 작업자 dyno에서 총 40 개의 연결을 최대로 연결할 수 있습니다.
레디 스 풀 크기
웹 다이노 (Sidekiq 클라이언트)는
Sidekiq.configure_client
블록에 지정된 연결 풀size
을 사용합니다. 클라이언트가 대기열에 지속적으로 작업을 추가하지 않기 때문에 일반적으로 ~ 3이면 충분합니다. (는인가 다이노 당 3, 푸마 노동자 당 3?)각 작업자 다이노 (Sidekiq 서버)에
Sidekiq.configure_server
블록에 지정된 연결 풀size
을 사용합니다. 기본적으로는 연결이 각 다이노 나는 Heroku가 + 레일을 알고 있지만 내가 더 일반적인 몇 가지 질문에 대답 할 수 생각하지 않는다
게시물에서 "worker"라는 단어를 삭제합니다. "스레드", "프로세스"및 "dyno"를 사용하십시오. 동시성은 15를 의미합니다. Sidekiq 프로세스에는 15 개의 스레드가 있습니다. –
연결 풀 크기는 프로세스 별입니다. dyno는 여러 프로세스를 실행할 수 있습니다. –