트래픽 급증 준비


35

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

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

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


3
이거 읽었 어? CloudFlare와 같은 서비스를 사용하여 정적 자산을 최소한으로 처리하는 것이 좋습니다. webmasters.stackexchange.com/questions/14394/…
richhallstoke

10
최대한 빨리 1and1.co.uk에 문의하십시오! 그들은 귀하의 웹 사이트를 스파이크를 허용하는 높은 CPU / RAM / 대역폭 비율을 가진 VPS 서비스 중 하나로 이동할 수 있습니다! 그 후 그들은 CPU / RAM을 줄여서 비용을 절약 할 수 있습니다
Simon Hayter

1
1 & 1과 공유 호스팅 계획입니까? 그렇다면 대체 솔루션 (매우 강력한 VPS 또는 클라우드 기반 호스팅)을 최대한 빨리 조사해야합니다. 모든 공유 호스팅 환경이 이러한 종류의 트래픽을 처리 할 수 ​​있을지 의문입니다.
Sean

3
예전에는 웹 호스트였습니다. 대부분의 호스트는 사전에 알고 있으면 상당히 쉽게 스파이크를 처리 할 수 ​​있으며 일반적으로 제공되지 않는 전체 옵션을 통해 도움을 줄 수 있습니다. 그 이유는 간단합니다. 하드웨어 캐시, 추가 서버,로드 밸런싱 옵션, 페일 오버 옵션 등과 같은 장비를 보유하고있을 가능성이 높습니다. 아이디어는 모든 것을 우아하게 처리 할 수있는 것처럼 보입니다. 비즈니스에 좋습니다. 대부분은 이러한 옵션을 무료로 설정합니다. 실제로 비즈니스의 정상적인 부분입니다.
closetnoc

많은 서버로드를 테스트하는 도구가 있다는 것을 알고 싶습니다. 나는 이름을 모르지만 쉽게 찾을 수 있습니다. 설정을 증폭하고 실제 사람들이 나타날 때 직접 이식하지 않고 통제 된 테스트 드라이브를 줄 수 있습니다. :)
Martijn

답변:


26

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

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

응용 프로그램 수준 향상 :

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

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

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

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

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

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

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

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


서버 레벨 개선 :

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

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

2. 정적 데이터 캐싱을 위해 CloudFlare와 같은 타사 서비스를 사용 하고 DDOS와 같은 악의적 인 사용자 및 공격으로부터 웹 사이트를 보호하십시오.

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

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

5. 부하 분산 -여러 부하 분산 서버에 부하를 분산시킵니다.


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

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

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


3
이것들은 모든 사이트 관련 것들과 훌륭합니다! 그러나 한 번에 20 만 건의 요청이 서버에 도달하지 않는 한 충분하지 않을 수 있습니다. 이전 웹 호스트로서, 나는 큰 하드웨어 캐시를 저장하고 캐시를로드하는 사이트를 실행하는 것을 좋아했습니다. 또한 여러 서버가 사이트를 공유하고 프록시 나 방화벽을 사용하여로드 균형 조정을 구현하더라도 사이트를 복제합니다. 보통 충분했습니다. 대부분의 사람들은 가장 큰 병목이 실제로 HD I / O임을 인식하지 못합니다. 메모리를 늘리고 Apache 및 MySQL 캐시에 사용하면 실제로 도움이됩니다.
closetnoc

2
당신은 대답을 향상시킬 수 있습니다! :)
Nikhil Supekar

1
나는 당신의 대답을 좋아합니다! 나는 그것을 투표했다. 기분을 상하게하지 마십시오. 웹 호스트 관점에서 몇 가지 사항을 지적하고 싶었습니다. 단지 의견입니다. 슬램이 아닙니다. 다시, 당신의 대답은 우수합니다! 종종 호스트에게 연락하는 것이 좋습니다. 왜냐하면 이런 것들이 때때로 나타나고 호스트가 할 수 있고 비용이 들지 않는 옵션이 있기 때문입니다. 대부분의 호스트는 관심을 끌고 있습니다! 저에게는 하드웨어가 이미 설치되어 있기 때문에 간단한 프로세스였습니다. 그러한 행사를 위해 부지를 준비하는 데 오래 걸리지 않았습니다. ;-) 초대 해줘서 고맙다.
closetnoc

1
위반은 없습니다. 실제로 우리는 서버 하드웨어에 대한 경험을 실제로 사용할 수 있습니다.
Nikhil Supekar

1
나는 트러스트 네트워크에 대한 연구를 제외하고 10 년 이상 업계에서 은퇴했습니다. 내가 좋아하는 것 중 하나는 Apache 및 MySQL 또는 유사한 응용 프로그램의 캐시를 가동하여 I / O 하위 시스템의 문제를 줄이는 것입니다. 나는 여기서 그것을했고 실제로 작동 할 수 있습니다. 또한 백업 저장소 이후 시스템의 메모리가 너무 많음을 경고 합니다. 스왑 파일 (기타) 유지 관리는 I / O 요청을 급격히 증가시킬 수 있으며 속도가 느려집니다. 스위트 스팟이 있지만 더 이상 그 스팟이 무엇인지 모르겠습니다. 나는 당신이 나보다 훨씬 더 전문가라고 생각합니다. ;-)
closetnoc

7

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

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

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

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

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

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

행운을 빌어 요!!

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


5

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

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


3

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

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

1과 1은 Plesk 또는 cPanel과 같은 제어판을 사용할 가능성이 높으므로 리소스와 경쟁하는 추가 항목이 있습니다. 관의 마지막 못은? 리소스가 부족합니다. 아마도 1 CPU (또는 가상 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이 요구에 맞게 확장 할 수 있는지 확인하십시오.


1

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


1

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

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

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

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


1

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

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

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

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


1

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

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

기사 를보고 "라운드 로빈"에 대해 읽으십시오.

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

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


0

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


0

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

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

일어날 것 같지 않습니까?

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.