Puma 워커/스레드 + DB 풀 설정

ID: b313d9d8-02d0-4449-af6e-162aef4b4e3c

긴급 완료

config/deploy.yml에 WEB_CONCURRENCY: 2, RAILS_MAX_THREADS: 5 추가. config/puma.rb에 workers + preload_app! 추가. 테스트 통과 확인.

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: infra-dev
생성일: 2026년 03월 06일 10:42

활동 로그

  • C
    code-reviewer Puma 설정 코드 품질 리뷰 완료 — 조건부 승인

    2026년 03월 06일 14:50:48

    상세 보기

    ## 리뷰 결과: config/puma.rb + config/deploy.yml

    ### ✅ 잘된 점
    - `WEB_CONCURRENCY: 2`, `RAILS_MAX_THREADS: 5` — 4GB 서버(DigitalOcean) 기준 적절한 설정
    - `preload_app!` 추가로 Copy-on-Write 메모리 최적화 활성화
    - Solid Queue in Puma 단일 서버 배포 최적화

    ### ⚠️ Critical 이슈 (즉시 수정 필요)
    **`config/database.yml:4` — DB Connection Pool 부족**
    - 현재: `max_connections: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>` = 5
    - 문제: workers=2, threads=5이면 필요 연결수 = 2×5 = 10 + SolidQueue
    - 위험: 프로덕션에서 `ActiveRecord::ConnectionTimeoutError` 발생 가능
    - 수정 방안: `DB_POOL: 10`을 deploy.yml에 추가하고 database.yml에서 참조

    ### 🔵 Minor 이슈
    **`config/puma.rb:40` — preload_app! 조건 없음**
    - workers=0일 때도 무조건 실행 (기능적 문제는 없으나 명확성 부족)
    - 개선: `preload_app! if ENV.fetch("WEB_CONCURRENCY", 0).to_i > 0`

    ### 판정: 조건부 승인 (DB pool Critical 수정 후 최종 승인)

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 06일 14:50:26

  • I
    infra-dev Puma 설정 변경 완료

    2026년 03월 06일 10:44:44

    상세 보기

    ## 변경 사항

    ### config/deploy.yml
    - `WEB_CONCURRENCY: 2` 추가 (env.clear)
    - `RAILS_MAX_THREADS: 5` 추가 (env.clear)

    ### config/puma.rb
    - `workers ENV.fetch("WEB_CONCURRENCY", 0)` 추가
    - `preload_app!` 추가 (CoW 메모리 절약)

    ### config/database.yml
    - 변경 없음 (이미 `RAILS_MAX_THREADS` 기본값 5 사용 중)

    ## 프로덕션 예상 구성
    - 2 workers × 5 threads = 최대 10 동시 요청 처리
    - DB pool: 5 (RAILS_MAX_THREADS와 동일)
    - SOLID_QUEUE_IN_PUMA와 충돌 없음 확인

    ## 테스트
    - `bin/rails test` 실행: 기존 실패(locale 관련) 외 새로운 실패 없음

  • I
    infra-dev 상태 변경: 할 일 → 리뷰

    2026년 03월 06일 10:44:38

  • I
    infra-dev Puma 설정 변경 시작

    2026년 03월 06일 10:43:45