사용자 100명을 위한 서버 구성

사용자 100명을 위한 서버 구성

다음 시나리오(실제 상황)에 대해 대략적인 서버와 관련된 문제가 있습니다.

이 서버에서 실행되는 웹 애플리케이션을 통해 액세스할 수 있는 일부 비디오를 저장할 서버가 있습니다. 이를 사용할 약 100명의 (동시) 사용자가 있을 것입니다(일반적으로 태블릿이나 휴대폰을 통해, 그러나 PC도 포함됩니다).

이 서버의 하드웨어 구성 구축에 관해 몇 가지 의견을 주실 수 있습니까? 여기서 실행되는 OS는 Linux입니다.

미리 감사드립니다.


편집 I:

내가 사용하는 웹 서버는 Apache HTTP이지만 Java서버의 프록시 역할을 할 가능성이 매우 높습니다(물론 이 컴퓨터에 설치됨).

이 서버에서 실행될 다른 애플리케이션은 다음과 같습니다.

  • 인증 신청서
  • 관리신청서입니다.

이 서버도 지속적으로(24/7) 실행됩니다.

답변1

귀하의 설명에 따르면 서버의 기본 사용 사례는 100명의 클라이언트에게 비디오를 스트리밍하는 것 같습니다.

이를 고려할 때 서버의 가장 중요한 두 가지 하위 시스템은 다음과 같습니다.

  1. 네트워크 연결
  2. 스토리지 시스템

성능을 위해 크기를 조정하려면 필요한 대역폭을 알아야 합니다. 이는 제공할 비디오의 품질에 따라 다릅니다. 비디오가 1MB/s라고 가정하면 100명의 사용자에 대해 네트워크와 스토리지 시스템 모두 100MB/s(네트워크의 경우 800Mb/s)의 데이터를 전달할 수 있어야 합니다.

네트워크 대역폭 연결이 단일 링크가 처리할 수 있는 것보다 크고 링크 속도를 높일 여유가 없는 경우(예: 1GbE에서 10GbE/40GbE로 마이그레이션) 더 많은 링크를 추가하고 레이어 2에서 집계하거나 여러 링크를 사용할 수 있습니다. IP 주소(링크당 하나) 및 애플리케이션을 통해 연결을 배포합니다. 또한 서버에서 클라이언트까지의 데이터 경로가 용량을 처리할 수 있는지 확인해야 합니다. 네트워크의 다른 곳에 병목 현상이 있으면 서버가 10Gbps를 제공할 수 있다는 의미가 없습니다!

스토리지 시스템의 경우 데이터를 제공하기 위해 대역폭과 IOPS(초당 IO) 수를 모두 처리할 수 있는지 확인해야 합니다. 위 계산에 따르면 100MB/s의 스트리밍 읽기가 필요하지만 사용자가 100명이므로 스토리지 시스템은 최소 100 IOPS를 처리할 수 있어야 합니다. 사용자가 비디오를 탐색할 것으로 예상한다면 성능을 유지하려면 훨씬 더 많은 것이 필요합니다. 하드 드라이브는 경합이 없을 때 우수한 스트리밍 성능을 제공할 수 있지만 동시 액세스 수가 증가하면 SSD를 고려합니다.

이러한 기본 성능 특성 외에도 네트워크 연결과 스토리지 시스템 모두에 대한 안정성도 고려해야 합니다. 링크 오류나 하드 드라이브 오류가 발생하면 어떻게 되나요? 서비스를 계속 제공하려면 여러 링크와 탄력적인 스토리지 구성(RAID 또는 애플리케이션/파일 시스템 수준의 데이터 복제를 통해)이 있어야 합니다.

저장 시스템용 RAM은 비디오를 캐시하고 저장 시스템의 부하를 줄이는 데 도움이 됩니다. 따라서 많은 사람이 동일한 비디오를 볼 것으로 예상된다면 일반적으로 더 많은 RAM이 도움이 됩니다. 그러나 작업 세트(일반적으로 액세스하는 데이터)의 크기가 시스템의 RAM 용량보다 큰 경우 큰 개선이 보이지 않더라도 놀라지 마십시오.

시스템의 대부분은 IO를 통해 데이터를 전달하므로 CPU 성능이 많이 필요하지 않으므로 최신 멀티 코어 CPU이면 충분합니다. NUMA 아키텍처에 CPU가 여러 개 있는 경우 CPU 상호 연결에 과부하가 걸리지 않도록 주의해야 합니다.

하드웨어를 확보한 후에는 이를 벤치마킹하여 성능이 현명한지 확인해야 합니다. 스토리지 시스템의 경우 다음을 권장합니다.피오도구를 사용하면 100개의 동시 판독기를 사용한 스트리밍 읽기와 같은 시나리오를 구체적으로 테스트할 수 있습니다.

위에서 말한 모든 내용을 고려하여 선호하는 공급업체에 문의하여 그들이 권장하는 구성을 확인해야 합니다. 요구 사항을 RFP의 일부로 만들면(특히 특정 IO 프로필 제공 기능과 같은 엄격한 요구 사항을 포함하는 경우) 나중에 성능 문제를 더 쉽게 해결할 수 있습니다.

이러한 시스템을 설계할 때 데이터가 시스템을 통해 이동하는 방식과 제한 사항이 어디에 있는지 생각해 보십시오.

마지막으로, 트래픽 증가와 최고치를 모두 처리할 수 있도록 초과 용량으로 시스템을 설계해야 합니다.

답변2

동시 사용자 수에 따라 정확한 서버 구성을 제공하는 것은 코드 및 데이터베이스 최적화에 따라 달라지기 때문에 어렵습니다. 기본적으로 애플리케이션과 서버에 대해 벤치마킹을 수행해야 하므로 이를 수행하는 데 사용할 수 있는 많은 오픈 소스 도구가 있습니다.

전체 벤치마킹뿐만 아니라 스택 벤치마킹도 할 수 있습니다.

다음과 같은 도구

  1. ab
  2. http_로드
  3. 시스벤치
  4. 유닉스벤치마크

등이 가능합니다.

답변3

이 서버의 하드웨어 구성 구축에 관해 몇 가지 의견을 주실 수 있습니까? 여기서 실행되는 OS는 Linux입니다.

예. 더블 사이즈를 사용하세요.</irony>

아니, 지금 단계에서는 불가능하다. 4코어-4GB 램 머신이나 mot를 사용할 수 있습니다. 이는 실제로 무엇을 하느냐에 따라 달라집니다. 파일 시스템에서 다운로드만 제공한다면 작은 머신도 괜찮을 것입니다. 그러나 Java 등의 경우 벤치마크입니다!


더 구체적으로 설명하려면 자신도 더 구체적으로 설명해야 합니다.

  • 무슨 웹서버?
  • 다운로드 전용 서버인가요?
  • cms 등과 같은 추가 웹 기반 소프트웨어가 있습니까?
  • 전체 LAMP 스택?
  • 연중무휴가 필요합니까?

주요 목적이 비디오를 제공하고 Java 애플리케이션의 역방향 프록시 역할을 하는 경우 nginx를 제안하고 싶습니다. Apache보다 훨씬 가볍고 더 적은 시스템 리소스를 필요로 하면서 더 많은 동시 연결을 처리합니다.

다운로드 섹션의 경우 웹앱을 피하고 역방향 프록시에서 직접 파일을 제공하십시오. 이렇게 하면 전체적으로 필요한 성능이 저하됩니다.

nginx에는 비디오용 정적 서버 역할을 하는 몇 가지 훌륭한 모듈이 있습니다.


연중무휴 관련: 꼭 해야 하나요?보장하다연중무휴 24시간 운영? 그런 다음 장애 조치 설정이 필요합니다.

관련 정보