문제

우리는 (한 번만) 첫날 상당한 양의 트래픽을 얻을 것으로 예상되는 클라이언트를 위해 웹사이트를 작업하고 있습니다.보도 자료가 있고 사람들이 이에 대해 블로그에 글을 올리고 있습니다.나는 우리가 첫날에 완전히 쓰러질까 봐 조금 걱정됩니다.대규모 출시 이후에도 계속 유지할 수 있도록 (실제 교통 데이터 없이 사전에) 확인하기 위해 살펴봐야 할 주요 사항은 무엇입니까?

세부:이것은 L/A/M/PHP 스택은 내부적으로 개발된 MVC 프레임워크를 사용합니다.이는 현재 Apache와 MySQL이 모두 포함된 하나의 서버에서 시작되고 있지만 필요한 경우 이를 분할할 수 있습니다.우리는 이미 memcached를 설치하고 있고 우리가 생각할 수 있는 만큼 많은 PHP 수준 캐싱을 수행하고 있습니다.일부 페이지는 쿼리 집약적이므로 템플릿 엔진으로 Smarty를 사용하고 있습니다.이러한 주요 측면을 변경할 시간이 없다는 점을 명심하십시오. 이것은 단지 설정일 뿐입니다.우리는 어떤 점을 주의해야 합니까?

도움이 되었습니까?

해결책

스파이크(또는 최대) 성능을 준비하거나 처리하려면 먼저 다음과 같은 간단한 성능 테스트를 통해 준비가 되었는지 확인합니다. jmeter.

설정 및 시작이 쉬우며 예상되는 최대 부하를 처리할 수 있는지 여부에 대한 초기 지표를 제공합니다.

그러나 시간 제약이 있는 경우 취해야 할 다른 단계는 가장 많은 관심을 끌 수 있는 정적 버전의 콘텐츠(예: 출시일인 경우 보도 자료)를 준비하는 것입니다.또한 클라이언트 측 캐싱을 최대한 활용하고 있는지 확인하십시오(서버에 대한 요청이 1회 줄어들면 큰 차이가 납니다).매우 높은 확장성과 효과적인 콘텐츠 캐싱 사용을 위해 이미 설계된 웹은 이러한 상황에서 가장 좋은 친구입니다.

높은 확장성에 관한 훌륭한 팟캐스트가 있습니다. 새로운 Guardian 웹사이트 디자인에 관한 소프트웨어 엔지니어링 라디오 상황이 진정되면.

출시에 행운을 빕니다

다른 팁

먼저 측정한 다음 최적화하세요.부하 테스트를 해 보셨나요?병목 현상은 어디에 있습니까?

병목 현상을 알고 나면 추가 DB 상자가 필요한지 또는 웹 상자가 필요한지 지능적으로 결정할 수 있습니다. 지금 당장은 추측에 불과합니다.

또한 로드 테스트 결과를 예상 트래픽과 어떻게 비교합니까?예상 트래픽의 2배를 처리할 수 있습니까?5배?추가 하드웨어를 얼마나 쉽고 빠르게 확보하고 출시할 수 있습니까?비즈니스 요구 사항은 출시 중에 실패하지 않는 것이라고 확신합니다. 많이 사용 가능한 용량이 많으면 나중에 로드가 안정되고 필요한 것이 무엇인지 알게 되면 언제든지 해제할 수 있습니다.

적어도 모든 정적 콘텐츠를 제외하겠습니다.다른 가상 호스트를 다른 곳에 설정하고 모든 그래픽/css/js를 여기에 로드하세요.해당 유형의 콘텐츠 제공을 오프로드하는 추가 주기를 구입할 수 있습니다.정말 걱정된다면 콘텐츠 배포 서비스에 가입하여 사용해 보세요.현재 Akamai와 유사하고 매우 저렴한 제품이 많이 있습니다.

또 다른 아이디어는 Apache mod_proxy를 활용하여 특정 시간 동안 생성된 페이지 출력을 유지하는 것입니다.APC도 꽤 쓸만할텐데..출력 버퍼링 캡처 + 페이지 관련 데이터의 마지막 수정 시간을 사용하고 APC 캐시 버전을 사용할 수 있습니다.페이지가 더 이상 유효하지 않으면 다시 생성하여 APC에 저장합니다.

행운을 빕니다. 학습 경험이 될 것입니다!

처리할 수 있는 한 많은 사용자를 허용하고, 사이트 성능을 측정하고, 라이브로 전환하기 전에 버그를 해결하는 베타 기간을 가지십시오.

비공개 베타에서 사용자 수를 명시적으로 제어할 수도 있고 각 사용자가 친구에게 제공할 수 있는 추천 수가 있는 Google 스타일의 준공개 베타에서도 사용자 수를 제어할 수 있습니다.

저는 개인적으로 몇 가지 일을 하고 싶습니다.

1) 일종의 로드 밸런서/데이터베이스 복제 시스템을 설치합니다.

이는 서비스를 여러 서버에 분산시킬 수 있음을 의미합니다.영구적으로 두 개 이상의 서버를 보유할 여유가 없습니까?Amazon E3 사용 - 이와 같은 작업을 수행하는 데 적합합니다(부하를 처리하기 위해 서버를 몇 대 더 켜십시오).

2) 일부 "고부하" 제한 사항이 있는 코드

예를 들어, 검색이 비효율적이라면 로드가 특정 수준에 도달하면 검색을 끄십시오."죄송합니다. 바빠서 나중에 다시 검색해 보세요."

3) 부하 테스트...다음과 같은 것을 사용하십시오 아파치벤치 서버를 스트레스 테스트합니다.

4) 개인적으로는 "Keep-Alive" 연결을 끄는 것이 더 좋다고 생각합니다.전반적인 성능이 약간 저하될 수 있지만, 이는 사이트가 소수의 사람들에게는 잘 작동하고 다른 사람들에게는 시간 초과가 발생하는 대신 해당 수준에 도달하면 모든 사람이 일관되지 않은 서비스를 받게 된다는 것을 의미합니다.

Linux Format에서는 "슬래시도팅에서 살아남는 방법"에 대한 좋은 기사를 작성했습니다...내가 과거에 유용하다고 생각한 것입니다.그것은 온라인에서 PDF로 사용 가능

높은 트래픽에 대비하여 사이트를 강화하기 위한 기본 첫 번째 단계입니다.

1) 다음과 같은 저렴한 도구를 사용하십시오. https://browsermob.com/ 사이트를 로드 테스트합니다.최소한 시간당 100,000명의 고유 방문자를 확인해야 합니다.MSN 홈 페이지에 광고가 표시된다면 시간당 500,000개의 고유 항목을 처리할 수 있는지 살펴보십시오.

2) 모든 정적 그래픽/비디오 콘텐츠를 CDN으로 이동합니다.Edgecast와 Amazon은 두 가지 훌륭한 선택입니다.

3) Jet Profiler를 사용하여 MySQL 서버를 프로파일링하여 성능이 느린 쿼리를 분석합니다.사소한 변화는 큰 이점을 가져올 수 있습니다.

사용을 살펴보세요 광택- 캐싱 역방향 프록시 서버입니다(오징어와 비슷하지만 훨씬 더 단일 목적에 가깝습니다).나는 그 뒤에 꽤 큰 사이트를 운영했는데 정말 잘 작동하는 것 같았습니다.

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