응용 프로그램에 대한 상품 하드웨어 추정
-
20-09-2019 - |
문제
스택 오버 플로우 웹 사이트를 개발하고 싶었다고 가정 해 봅시다. 하루에 백만 건의 요청을 가정하면이 웹 사이트를 지원하는 데 필요한 상품 하드웨어의 양을 어떻게 추정합니까? 이 상황에서 가능한 성능 향상을 설명하는 사례 연구가 있습니까?
I/O 병목 현상은 대부분의 시스템에서 주요 병목 현상이라는 것을 알고 있습니다. I/O 성능을 향상시킬 수있는 가능한 옵션은 무엇입니까? 내가 아는 그들 중 몇 명
- 캐싱
- 복제
해결책
스토리지 설정에 사용하는 내용에 따라 여러 가지 방법으로 I/O 성능을 향상시킬 수 있습니다.
- 앱이 I/OS에 우수한 공간 위치를 표시하거나 큰 파일을 사용하는 경우 파일 시스템 블록 크기를 늘리십시오.
- 사용 습격 10 성능 + 중복성 (디스크 고장 보호)을위한 (스트라이핑 + 미러링).
- 빠른 디스크 (Performance Wise : SSD> FC> SATA)를 사용하십시오.
- 다른 시간에 작업량을 분리합니다. 예를 들어 밤 동안 백업, 낮에는 일반 앱 I/O입니다.
- 끄다 Atime 업데이트 파일 시스템에서.
- 캐시 NFS 파일 처리 일명 커다란 건초 더미 (Facebook), NFS 서버에 데이터를 저장하는 경우.
- 작은 파일을 더 큰 청크 (일명)로 결합하십시오 bigtable, HBASE.
- 동일한 디렉토리에있는 매우 큰 디렉토리, 즉 많은 파일을 피하십시오 (대신 다른 디렉토리 사이에 파일을 계층 구조로 나눕니다).
- a 클러스터 스토리지 시스템 (그렇습니다. 정확히 상품 하드웨어가 아닙니다).
- 가능할 때마다 순차 디스크 액세스를 위해 애플리케이션을 최적화/설계하십시오.
- 사용 memcached. :)
"학습 한 교훈"섹션을보고 싶을 수도 있습니다. stackoverflow 아키텍처.
다른 팁
이 편리한 도구를 확인하십시오.
그리고 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를 수행하지 않는 것입니다 (가능한 한 많이). 즉, 배치 된 쓰기가있는 이전 아키텍처 (몇 초 동안 데이터를 잃는 데 문제가 없음), 기본적으로 로그 파일, 복제를 위해 소켓에 기록합니다.