문제

스택 오버 플로우 웹 사이트를 개발하고 싶었다고 가정 해 봅시다. 하루에 백만 건의 요청을 가정하면이 웹 사이트를 지원하는 데 필요한 상품 하드웨어의 양을 어떻게 추정합니까? 이 상황에서 가능한 성능 향상을 설명하는 사례 연구가 있습니까?

I/O 병목 현상은 대부분의 시스템에서 주요 병목 현상이라는 것을 알고 있습니다. I/O 성능을 향상시킬 수있는 가능한 옵션은 무엇입니까? 내가 아는 그들 중 몇 명

  1. 캐싱
  2. 복제
도움이 되었습니까?

해결책

스토리지 설정에 사용하는 내용에 따라 여러 가지 방법으로 I/O 성능을 향상시킬 수 있습니다.

  1. 앱이 I/OS에 우수한 공간 위치를 표시하거나 큰 파일을 사용하는 경우 파일 시스템 블록 크기를 늘리십시오.
  2. 사용 습격 10 성능 + 중복성 (디스크 고장 보호)을위한 (스트라이핑 + 미러링).
  3. 빠른 디스크 (Performance Wise : SSD> FC> SATA)를 사용하십시오.
  4. 다른 시간에 작업량을 분리합니다. 예를 들어 밤 동안 백업, 낮에는 일반 앱 I/O입니다.
  5. 끄다 Atime 업데이트 파일 시스템에서.
  6. 캐시 NFS 파일 처리 일명 커다란 건초 더미 (Facebook), NFS 서버에 데이터를 저장하는 경우.
  7. 작은 파일을 더 큰 청크 (일명)로 결합하십시오 bigtable, HBASE.
  8. 동일한 디렉토리에있는 매우 큰 디렉토리, 즉 많은 파일을 피하십시오 (대신 다른 디렉토리 사이에 파일을 계층 구조로 나눕니다).
  9. a 클러스터 스토리지 시스템 (그렇습니다. 정확히 상품 하드웨어가 아닙니다).
  10. 가능할 때마다 순차 디스크 액세스를 위해 애플리케이션을 최적화/설계하십시오.
  11. 사용 memcached. :)

"학습 한 교훈"섹션을보고 싶을 수도 있습니다. stackoverflow 아키텍처.

다른 팁

이 편리한 도구를 확인하십시오.

http://www.sizinglounge.com/

그리고 Dell의 또 다른 가이드 :

http://www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555

자신의 stackoverflow와 같은 커뮤니티를 원한다면 가입 할 수 있습니다. Stackexchange.

여기에서 몇 가지 사례 연구를 읽을 수 있습니다.

높은 확장 성 -Rackspace가 이제 MapReduce 및 Hadoop을 사용하여 테라 바이트의 데이터를 쿼리하기 위해http://highscalability.com/how-rackspace-uses-mapreduce-and-hadoop-query-terabytes-data

http://www.gear6.com/gear6downloads?fid=56&dlt=case-study&ls=Veoh-case-study

하루에 1 백만 요청은 12/초입니다. 스택 오버 플로우는 (흥미로운 정규화 및 압축 트릭으로) 64 Gbyte Dell PowerEdge 2970의 RAM에 완전히 적합 할 수있을 정도로 작습니다. 캐싱과 복제가 어디에 있어야하는지 잘 모르겠습니다.

정규화에 대해 충분히 생각하는 데 문제가있는 경우 256GB의 PowerEdge R900을 사용할 수 있습니다.

단일 고장 지점이 마음에 들지 않으면 몇 가지를 연결하고 소켓을 통해 업데이트를 푸시 할 수 있습니다 (바람직하게는 별도의 네트워크 카드). 12k/second의 피크 하중조차도 메인 메모리 시스템의 경우 문제가되지 않아야합니다.

I/O 병목 현상을 피하는 가장 좋은 방법은 I/O를 수행하지 않는 것입니다 (가능한 한 많이). 즉, 배치 된 쓰기가있는 이전 아키텍처 (몇 초 동안 데이터를 잃는 데 문제가 없음), 기본적으로 로그 파일, 복제를 위해 소켓에 기록합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top