wake-up-neo.com

트래픽 급증 준비

우리 회사는 이번 주에 프라임 타임 TV 쇼에 출연 할 것이며 웹 사이트에서 한 번에 약 20 만 명의 방문자를 기대할 수 있다고 말했습니다.

일반적으로 하루에 약 100 회의 방문이 발생하므로 많은 트래픽을 처리 할 수 ​​있을지 모르겠습니다. 1and1.co.uk 님이 주최합니다.

사이트가 무너지는 것을 방지하기 위해 취할 수있는 예방 조치가 있습니까?

35
SamTheMan

트래픽이 많은 기간 동안 서버는 웹 사이트 방문자의 모든 요청을 처리 할 수 ​​있어야합니다. 그러나 서버가 처리하는 동시 연결에는 약간의 제한이 있습니다. 따라서 가능한 빨리 페이지 요청을 처리하는 것이 가장 좋습니다.

이러한 상황에서 고려해야 할 몇 가지 제안이 있습니다.

응용 프로그램 수준 향상 :

1. HTTP 요청을 최소화하여 페이지로드 시간을 단축시킵니다.

a) 모든 JS 파일을 하나의 결합 된 JS 파일로 결합하고 모든 CSS 파일을 하나의 결합 된 CSS 파일로 결합합니다.

b) JS 및 CSS 파일을 축소하면 파일 크기가 줄어들고 다운로드 속도가 빨라집니다.

c) CSS Sprite 사용-대부분 또는 모든 이미지를 Sprite로 결합하면 여러 이미지 요청을 하나의 것으로 전환합니다. 그런 다음 background-image CSS 속성을 사용하여 필요한 이미지 섹션을 표시합니다.

d) 지연 로딩으로 이미지 다운로드를 지연 시키면 http 요청을 줄이는 데 도움이됩니다.

2. 더 많은 방문이 예상되는 경량 페이지를 준비하십시오.

a) 가능하면 이미지 나 플래시와 같은 장식 요소를 제외하십시오. 사이트 탐색 및 크롬에서 이미지 대신 텍스트를 사용하고 대부분의 콘텐츠를 HTML로 넣습니다.

b) 동적 페이지 대신 정적 HTML 페이지를 사용하십시오. 후자는 서버에 더 많은 부하를줍니다. 동적 페이지의 정적 출력을 캐시하여 서버로드를 줄일 수도 있습니다.


서버 수준 개선 :

1. 서버 시간 초과 값을 줄입니다 호스팅 제공 업체에 문의하십시오 (너무 낮아서는 안 됨).

시간이 초과되면 연결이 곧 해제되므로 서버에서 더 많은 연결을 처리 할 수 ​​있습니다.

2. 타사 서비스 사용 정적 데이터 캐싱을위한 CloudFlare와 같으며 DDOS와 같은 악의적 인 사용자 및 공격으로부터 웹 사이트를 보호합니다.

. 서버 하드웨어 업그레이드-필요한 경우 물리적 및 가상 메모리를 업그레이드하고 I/O 및 입력 프로세스 제한을 높입니다. 호스팅 제공 업체가 더 잘 도와 드릴 수 있습니다.

4. 캐시 동적 코드-APC를 사용하여 PHP opcode를 캐시합니다.

5.로드 밸런싱-여러로드 밸런싱 서버에로드를 분산시킵니다.


  • 필요한 모든 조치가 취해 졌으면 이제 웹 사이트에 트래픽이 급증 할 준비가되었는지 확인해야합니다.

    시뮬레이션 된 트래픽으로로드 테스트를 제공하는 loadimpact.com과 같은 일부 타사 서비스가 있습니다. 분석을 통해 웹 사이트에서 처리 할 수있는 부하량과 개선 할 수있는 사항을 이해하는 데 도움이됩니다.

  • 또한 트래픽 스파이크 기간 동안 웹 사이트 백업 크론 작업 등과 같은 높은 CPU 사용량 작업을 피하십시오.

26
Nikhil Supekar

우선 Cloudflare를 추천합니다. 무료 기본 계정을 만들 수 있으며 로컬 데이터 센터를 통해 트래픽을 라우팅하여 서버 홉 양을 최소화합니다. Cloudflare는 컨텐츠 캐싱에 적합하며 DDOS 보호 기능이 있습니다.

그 외에는 서비스 계층에서 지방을 제거하십시오. 지나치게 많은 데이터베이스 쿼리로 인해 코드 병목 현상이 발생하거나 단순화 될 수있는 CPU 집약적 논리가 없는지 확인하십시오.

또한 모든 데이터베이스 쿼리를 캐시하십시오. 쿼리 캐싱에 대한 몇 가지 훌륭한 옵션은 Redis 또는 Memcache입니다. 컴파일되지 않은 언어를 사용하는 경우 OpCaching도 고려해야합니다.

그러나 가장 중요한 것은 정적 콘텐츠 (예 : CSS, js 및 이미지)를 최대한 최적화하는 것입니다. 모든 Javascript를 축소하고 가능한 경우 모두 하나의 파일로 결합하십시오. 사이트에 포함 된 각 파일은 최종 사용자에게 도달하기 위해 여러 개의 서버 홉을 만들어야합니다.

압축 이미지를 통해 절약 할 수있는 대역폭과로드 시간을 과소 평가하지 마십시오!

마지막으로 New Relic과 같은 도구를 사용하여 성능 모니터링을 고려하십시오.

행운을 빕니다!!

Alexa에 따르면 영국에서 12 번째로 가장 인기있는 사이트의 개발자 중 한 명입니다.

7
Ewan Valentine

사이트로드 테스트를 고려하십시오. JMeter , The GrinderGatling 과 같은 무료 도구를 사용하면 사이트를 방문하는 많은 방문자를 시뮬레이션 할 수 있습니다.

사전에 많은 트래픽의 영향을 테스트하여 수행 한 조정이 효과적인지 여부를 판별하고 추가 조정을 볼 수 있습니다.

5
James_pic

1and1에 있다면 저렴한 호스팅을 찾고있을 것입니다. 저렴한 호스팅은 하나의 상자에서 모든 것을하는 경향이 있음을 의미합니다. 호스팅의 주요 문제점은 동일한 상자에 모든 것을 호스팅 할 때 리소스를 사이트의 중요한 부분으로 나누는 것입니다.

  • 웹 서버 (Apache, Nginx 등)
  • 데이터베이스 (MySQL, PostGreSQL 등)

1과 1은 Plesk 또는 cPanel과 같은 제어판을 사용할 가능성이 높기 때문에 리소스와 경쟁하는 추가 항목이 있음을 의미합니다. 관의 마지막 못은? 리소스가 부족합니다. CPU 1 개 (또는 가상 CPU)가 있고 RAM이 거의 없을 것입니다 (2GB가 넘으면 놀랄 것입니다).

1and1을 버릴 때 확장 가능한 호스팅 공급자 (우리의 경우 Amazon Web Services)와 함께 갔으며 이전에는 할 수 없었던 몇 가지 작업을 수행했습니다.

  1. Amazon에는 자체 데이터베이스 인스턴스 (RDS)가 있으므로 데이터베이스에 숨을 쉬게 할 리소스가 있습니다. 대부분의 RDBMS 시스템은 RAM에서 살아 숨 쉬고 있습니다. 이제 I/O가 높은 SSD를 프로비저닝 할 수 있으므로 다른 DB 초크 포인트 (데이터 쓰기)가 덜 어려워집니다.
  2. 2 대의 웹 서버가있는로드 밸런서가 있습니다. DB 백엔드가 많기 때문에 고급 프런트 엔드가 필요하지 않았으므로 두 개의 하단 서버가 있습니다.
  3. 필요에 따라 완전히 구성된 시스템을 가동 할 수있는 것으로 전환했습니다. Chef 또는 Puppet과 같은 것을 사용하면 새 웹 서버를 쉽게 추가 할 수 있으며 올바르게 수행하면 최종 사용자에게 100 % 투명하게됩니다. AWS에는 Opsworks 도 있으므로 스크립트를 AWS에 직접 빌드 할 수 있습니다.
  4. 필요에 따라 인스턴스 크기를 변경하십시오. 이것은 우리에게 중요한 부분입니다. DB가 다운되면 몇 분 안에 DB를 가져와 더 큰 것으로 다시 시작할 수 있습니다. 예, 가동 중지 시간이 수반되지만 몇 분의 가동 중지 시간이 엄청나게 느린 사이트의 시간보다 낫습니다. 다운 타임이 두렵습니까? 윙에 읽기 전용 복제본을 보관 한 다음이를 중단하고 더 큰 인스턴스로 전환하고 마스터로 승격하면 추가 시스템 비용으로 인한 다운 타임을 피할 수 있습니다.

AWS는 도시 (Azure, Rackspace 등)에서 유일한 게임은 아니지만 1and1이 요구에 맞게 확장 할 수 있는지 확인하십시오.

3
Machavity

"한 번에"를 잘 정의하지 않았습니다. 30 분 동안 20 만 명의 순 방문자를보고 있다고 가정 해 보겠습니다. 클릭 수를 늘리고 더 많은 페이지를 여는 방문자를 고려하지 않고 초당 111 건의 요청입니다.

가장 먼저 할 일은 비슷한 양의 트래픽을 처리하는 사람들의 Google 이야기입니다. 많은 사람들이 다른 사람들을 돕기 위해 블로그에 자신의 경험에 대해 글을 쓸 것입니다. 공유 호스팅에서 다른 사람에 대한 이야기를 찾기가 매우 어렵다는 것을 알 수 있습니다. 그 이유가 있습니다. 고객에게 가장 가까운 데이터 센터를 사용하여 초보자를위한 Digital Ocean 또는 Amazon Web Services와 같은 솔루션을 살펴보십시오. 그리고 무료 계정 인 경우에도 모든 정적 리소스를 CloudFlare로 오프로드하는 것이 좋습니다.

그 외에도, 페이지의 상단과 하단에 타이밍 스크립트를 추가하여 코드가 동적이라고 가정하여 코드를 테스트하십시오. 숫자에 대한 내 가정이 정확하다고 가정하면 허용 가능한 성능을 유지하기 위해 각 페이지를 10 밀리 초 미만으로 제공 할 수 있어야합니다. 기본적으로 SSL을 통해 모든 요청을 처리하는 경우 폭풍이 지나가는 동안 며칠 동안 사용 중지하십시오.

또한 200,000 개의 사운드가 매우 무섭지 만, too 겁 먹을 필요는 없습니다. 예를 들어, Paper magazine에서 Kim Kardashian의 NSFW 사진을 게시 할 때로드를 처리하는 데 중간 크기 웹 서버와 Amazon ELB가 4 개만 있으면 이 기사에 따르면 (SFW) . 현재 설정으로 처리 할 것이라고 생각하지는 않지만 48 개의 코어가있는 16 개의 웹 서버가 필요하지는 않습니다.

1
John Cave

ISP에 문의하여 대역폭에 제한이 있는지 확인하십시오. 예상 트래픽 양에 비해 대역폭이 부족한 경우 호스팅 계획을 업그레이드하십시오. 방문자에게 "대역폭 제한 초과"메시지를 표시하고 싶지 않습니다.

1
Salman A

이 오래된,하지만 아주 좋은 질문을 알고 몇 년 전에 주제에 대한 좋은 정보를 얻었기를 바랍니다 ...

때때로 우리는 (학교 활동 관련) 사이트를 TV 네트워크에 게시했습니다. 매우 적은 예산으로 운영되므로 "로드 밸런싱"이 솔루션입니다. VPS 상자는 요즘 꽤 저렴할 수 있으며 그 중 2-3 개에 내용을 미러링/복제합니다.

article 을보고 "round-robin"에 대해 읽으십시오.

로드 테스트에 대한 자세한 내용은 here 를 참조하십시오.

처음으로 스파이크를 처리하기 시작했을 때, 우리는 단순히 2-3 VPS 상자에 내용을 넣고 등록자 설정에 NS를 배치했습니다.

1
Woody

개인적인 경험을 통해 최고의 VPS조차도 한계가 있음을 알고있었습니다. 나는 진짜 평신도가 여기에 간다.

우리 스포츠 웹 사이트 중 하나가 VPS에서 호스팅되었습니다. 파키스탄과 인도의 경기에서 우리는 70,000 건 이상의 안타를 받았습니다. 우리는 4GB RAM 및 2.something GHz 처리, 1TB 대역폭, SSD 스토리지 및 기타 멋진 기능을 갖춘 Inmotinghosting VPS를 가지고있었습니다. 유료 버전의 Cloudflare도 활성화했습니다.

경기가 반쯤 끝났고 웹 사이트가 다운되었습니다. 경기 중 생방송은 없었으며 방문객 수는 7 만 명 이상 증가했습니다. 나중에 우리는 대역폭이 소비되었고 소스 호스트가 작동하지 않으면 CDN이 거의 쓸모가 없다는 것을 알았습니다.

레슨 : VPS를 받고 Cloudflare와 같은 CND로 조정하는 것 외에도 페이지 크기를 최소화하십시오. 작을수록 좋습니다. 트래픽을 처리하는 데 매우 편리한 페이지 캐싱 및 코드 축소를 사용할 수 있습니다.

1
imranhunzai

일주일 이내에 웹 사이트를 다시 작성하고, 공급자를 전환하고, CDN으로 컨텐츠를 마이그레이션하는 것이 좋습니다.

다른 답변에서 알 수 있듯이 트래픽이 크게 증가 할 수 있도록 사이트를 준비하기 위해 수행해야하는 최소한의 작업입니다. 현재 1and1.co.uk에서 실행하고 있지만 강력한 네트워크 엔지니어, DBA, 프로그래머 및 프런트 엔드 최적화 팀이 없을 것입니다.

일어날 것 같지 않습니까?

쇼핑 카트를 운영하는지 또는 정적 컨텐츠로 구현할 수 있는지 여부에 관계없이 웹 사이트에서 수행하는 작업에 대해서는 언급하지 않았습니다. 후자의 경우 전체 사이트를 정적 파일로 긁어 일반 사이트 대신 게시하면 쓰나미에서 살아남을 수 있습니다 (현재 버전을 먼저 백업하십시오).

또한 1and1 (신용 카드를 가지고)과 대화해야합니다.

0
symcbean

최선의 방법은 멀티 클러스터 된 전용 서버를 사용하여 문제를 해결할 것입니다

0
Himanshu Singla