2009-07-26 4 views
0

ASP.net 플랫폼에서 중간 크기의 웹 사이트를 실행하고 MS SQL 서버를 사용하여 데이터를 저장합니다.MS SQL 서버로 Asp.net 웹 사이트 실행 - 언제 확장성에 대해 걱정해야합니까?

내 현재 사이트 통계는 다음과 같습니다

~ 6000 페이지 페이지 당 ~ 4 쿼리 호스팅 기계 1GB의 RAM

있다 봉사 테이블 당 약 1,000 행으로 SQL 서버에서 하루를 ~ 10 테이블 뷰

나는 주위를 치고 2009 년 말까지 예상 :

~ 20,000 페이지 뷰 ~ 10 개 테이블과 페이지 당 ~ 5 쿼리

봉사 테이블 당 약 4000 행

내 질문에 지금 바로 확장 성을 계획해야합니까? 예상치와 함께 연말까지 기계가 멈출 것인가?

나는 내 설명이 매우 최상이며 질의의 종류에 대한 통찰력을 제공하지 않는다는 것을 알고있다. 그러나 단지 당신의 직감이 당신에게 말하는 것을 알고 싶다.

감사합니다.

답변

1

항상 확장 성을 계획해야합니다. 실제 스케일링을 할 때 리소스를 넣을 때는 일반적으로 어렵습니다.

기계는

너무 적은 정보는이 답변을 올해 말 까지 개최한다. 페이지 당 네 번의 쿼리를 통해 레거시 엔터프라이즈 애플리케이션과의 대규모 상호 작용으로 인해 페이지 요청에 처리하는 데 30 CPU 초가 걸리면 아무런 효과가 없습니다. 캐시에 저장된 일부 정적 컨텐츠를 제공하기 위해 초 단위의 초 단위를 사용하고 컨텐츠를 새로 고치기 위해 30 분마다 쿼리를 실행하면 2020 년까지는 트래픽 증가율이 좋아집니다.

내 생각에 당신은 후자의 시나리오에 더 가깝습니다.하루에 20,000 페이지 히트 수는 트래픽이 많지는 않지만 필요한 계산을 할 수 있도록 어느 시점에서 페이지 및 서버 성능을 벤치 마크해야합니다.

  • 출력 캐싱
  • 가 적절한
  • 세션 최적화
  • 요청, 스크립트, CSS, Ajax를 사용하여 viewstate가
  • 최적화 : 그것은 시간 때

    상황이 사이트를 확장에 대한보고 및 html minification

2 년 전 IIS를 실행하고 1100-1200 개의 간단한 동적 페이지 요청을 제공하는 비교적 새로운 (2 년 전) 노트북을 보았습니다. 초당. 이 회사는 ASP.Net 웹 사이트를 최적화하는 컨설팅 회사에 의해 설립되었지만 할 수있는 일이 얼마나되는지 보여줍니다.

0

샘플 데이터를 사용하여 빠른 성능 테스트를 설정해 보셨습니까? 20,000 페이지 뷰는 초당 1 개 미만입니다 (8 시간 동안 균일하게 분포한다고 가정). 작은 테이블의 경우 매우 적습니다. 각 페이지 뷰 (즉, 테이블 중 하나에서 1000 개의 행이 모두 포함 된 데이터 테이블)를 사용하여 엄청난 양의 데이터를 전송하지 않는다고 가정하면 문제가 없을 것입니다.

RAM을 늘려야 할 수도 있지만 성능 테스트를 실행하는 것 외에는 현재 성능에 대해별로 걱정할 필요가 없습니다.

1

기본적으로 2009 년 말까지 하루에 100,000 개의 SQL 쿼리를 수행 할 것으로 예상됩니다. 초당 약 1.157 개의 쿼리입니다.

구성이 "정상"(즉, 펑키하고 일그러진 SELECT, UPDATE, INSERT 등)가 아니라고 가정하고 서버가 RAID 디스크를 실행 중입니다.

테이블 당 4,000 개의 행에서 이것은 SQL 서버에 아무 것도 없습니다. 넌 괜찮을거야. 당신이 그것에 능동적 이길 원한다면 서버에 다른 RAM 스틱을 놓고 적어도 2GB까지 가져 오면 IIS와 SQL에는 충분한 메모리가 있습니다 (SQL은 확실히 그것을 활용할 것입니다).

0

설명하는 하중이 대부분의 기계에서 너무 많은 문제라고 생각하지 않습니다. 물론 윤곽을 그리는 몇 가지 메트릭뿐만 아니라 쿼리 복잡성, 페이지 크기 및 기타 다른 요소에도 의존합니다.

확장성에 대해 걱정할 경우로드 테스트를 수행하고 사이트에서 처리하는 방식 (시간당 10000 페이지 뷰 (초당 약 3 회의보기))을 확인하십시오. 예상 시나리오를 계획하는 한 미리 계획을 세우는 것이 좋습니다.

0

Guts say : 각각 4,000 개의 행을 가진 10 개의 테이블이 주어지며 행당 약 2KB의 데이터가 전체 데이터베이스의 경우에만 80MB라고 가정합니다. 사용 가능한 메모리 내에서 쉽게 캐시됩니다. 응용 프로그램에 대한 다른 모든 것들이 똑같이 단순하다고 가정하면 초당 수백 페이지를 쉽게 처리 할 수 ​​있어야합니다.

엔지니어가 말하길 : 알고 싶으면 스트레스 테스트를하십시오.

1

호스팅 시스템은 무엇입니까? 그렇다면 호스팅 회사에서 제공하는 전용 SQL Server를 사용하여 IIS와 SQL을 호스트 컴퓨터의 동일한 상자 또는 IIS에 설치 했습니까? 어쨌든 데이터베이스에 대한 히트 (가능한 경우)를 최소화하기 위해 캐싱 계층을 구현하는 방법을 살펴 보는 것이 좋습니다. 일단 이것이 계획 되었으면 (필연적으로 구현되지는 않음), 나는 당신이 출력물 주위에 캐싱 레이어를 만드는 방법을 살펴볼 것입니다. 캐싱 레이어를 구축하기위한 쉬운 경로를 발견하면 다음은 데이터베이스에 대한 요청을 최소화하고 웹 서버에서 작업하기위한 빠르고 쉬운 방법입니다. 이 캐시 계층은 유연해야한다고 제안합니다. .NET에서 제공하는 것을 사용하지 마십시오. 현재 MemCached Win32를 사용하는 것이 좋습니다. 하나의 호스팅 된 로컬 박스에 쉽게 설치할 수 있으며 로컬 리소스를 사용하도록 캐시 계층을 구성 할 수 있습니다 (메모리 추가 ... 1GB는 충분하지 않음). 그럼 당신이 정말로 당신의 시스템에서 성능의 모든 작은 비트를 쥐어 짜낼 필요가 있다는 것을 알게되면 ... 두 번째 상자를 과시하십시오. 현재 상자와 새 상자 사이에서 캐시를 분할하여 더 많은 캐시를 유지할 수 있습니다. 이것은 당신에게 성장할 수있는 방 (그리고 시간)을 줄 것입니다. 캐시를 더 많이 사용하면 향후 스파이크를 해결하는 데 도움이 될 것입니다. 두 번째 상자를 사용하면 농장 환경에서 사이트를 만드는 데 집중할 수 있습니다. 로컬 세션을 사용중인 경우 캐시 계층에 그 세션을 푸시하면 한 상자 또는 다른 세션의 요청이 중요하지 않습니다 (표준 세션은 관리 대상 상자의 로컬 임).

이것은 거대한 주제입니다 ... 실제 세부 사항이 없으므로 이것은 물론 모든 추측입니다! 기존 설치에 더 나은 하드웨어를 추가하는 것이 옳을 수도 있습니다.

+0

"이 캐시 계층은 유연해야한다고 제안합니다. .NET에서 제공하는 것을 사용하지 마십시오!"- Andrew는 이것에 대해 우리에게 몇 가지 주장을 해줄 수 있습니까? – user134706

+0

저는 MemCache (리눅스 기반 서버)를 사용하여 캐시 팜 개념을 지원했습니다 (많은 서버에서 램 기반 캐시를위한 클러스터에서 필요한만큼 많은 서버를 지원합니다).) 그런 다음 Windows 기반 서버 인 MemCache Win32 제품이 출시되었습니다. 이러한 기술의 성공과 필요성을 확인합니다 ... Microsoft는 현재 팜 스타일을 지원하면서 많은 훌륭한 기능을 갖춘 Velocity 제품을 제공하고 있습니다 은닉처. –

관련 문제