IT

Nginx는 어떻게 설정해야 될까?(실전예제1)

마시멜로를찾아서 2025. 4. 1. 12:53
반응형
  • 서버 종류: Windows Server
  • 인터넷 속도: 950 Mbps (Fast.com 기준)
  • API 응답 용량: 최대 15MB
  • 웹 서버: Nginx 설정 있음 (worker_processes 1, worker_connections 1024, client_max_body_size 1G 등)

이제 이 조건을 바탕으로, 몇 명의 사용자가 동시에 15MB API를 원활하게 호출할 수 있는지 해석해드릴게요.


📥 1. 인터넷 속도 기준: 대역폭 계산

  • 950 Mbps = 약 118.75 MB/s (MegaBytes per second)

→ 즉, 이론적으로 초당 118.75MB 전송 가능


📦 2. API 요청당 사용량

  • API 응답 하나당: 15MB

→ 동시에 몇 명에게 전송할 수 있나?

bash
복사편집
118.75 MB/s ÷ 15 MB ≈ 약 7.9명

즉, 초당 약 7~8명에게 15MB 응답을 동시에 전달 가능
이건 이론치이고, 실제 네트워크/서버 병목 등을 고려하면 약 5~6명 수준에서 안정적 처리 예상


🧰 3. Nginx 설정 포함 분석

✅ worker_processes 1

  • 멀티코어 환경에서도 1개 프로세스만 요청 처리
  • 병렬 처리 제한 → 성능 병목 발생 가능
  • 추천: worker_processes auto;로 변경

✅ worker_connections 1024

  • 워커 1개가 최대 1024개의 연결을 동시에 유지 가능

→ 최대 연결 수 = 1 x 1024 = 1024 연결

하지만 하나의 사용자가 여러 연결(HTML, JS, API 등)을 동시에 사용하므로, 실사용자 수는 대략 100~300명 수준


✅ client_max_body_size 1G

  • 클라이언트 요청 크기 제한 완화 → 15MB API 충분히 처리 가능 ✅

✅ 디스크 & 네트워크 I/O 고려

  • 서버가 고속 SSD일 경우 응답 처리 시간 더 빠름
  • 네트워크 NIC (네트워크 카드)가 기가비트 이상 지원해야 병목 없음

🔢 실사용자 수 추정 시나리오

기준예측
15MB 응답을 1초에 받아야 하는 동시 사용자 약 5~8명
요청 간격이 5초라면? 최대 5초에 5명 × 5초 = 25~40명 동시처리 가능
요청 간격이 10초라면? 50~80명까지 여유 있음

즉, 요청이 순차적으로 분산되면 수백 명도 문제 없음.
하지만 동시에 요청이 몰릴 경우 5~10명 이상은 병목 가능성 있음.


🧠 성능 개선 팁

항목추천
worker_processes auto 로 변경 (CPU 코어 수 활용)
gzip 압축 API 응답이 JSON/text라면 GZIP 적용 시 전송량 50~70% 절감
proxy_buffers 프록시 응답 버퍼 튜닝으로 대용량 응답 안정화
응답 캐싱 동일한 API 응답이 반복될 경우, Nginx 캐싱 고려
클라이언트 제한 limit_conn 또는 limit_req 등으로 과도한 요청 제어 가능

✅ 결론 정리

  • 현재 950Mbps 네트워크에서는 15MB 응답을 초당 약 7~8명에게 동시에 제공 가능
  • 실제 안정적인 동시 처리 수는 요청 주기에 따라 50~200명까지 가능
  • Nginx는 병목 가능성 있음 → worker_processes auto로 반드시 변경
  • GZIP/캐시/부하 분산 설정을 추가하면 더 많은 동시 사용자 수 확보 가능
반응형