Chuẩn bị cho một sự đột biến lớn trong giao thông


35

Công ty của chúng tôi sẽ xuất hiện trên một chương trình truyền hình vào giờ cao điểm trong tuần này và họ đã nói với chúng tôi rằng chúng tôi có thể mong đợi khoảng 200.000 khách truy cập trên trang web của chúng tôi cùng một lúc.

Chúng tôi thường chỉ nhận được khoảng 100 lượt truy cập mỗi ngày, vì vậy tôi không biết liệu chúng tôi có thể xử lý lưu lượng truy cập đó không. Chúng tôi được tổ chức bởi 1and1.co.uk.

Có bất kỳ biện pháp phòng ngừa nào chúng tôi có thể thực hiện để ngăn chặn trang web của chúng tôi bị tê liệt?


3
Bạn đã đọc chưa? Tôi chắc chắn sẽ khuyên bạn nên cho phép một dịch vụ như CloudFlare xử lý các tài sản tĩnh ở mức tối thiểu. webmasters.stackexchange.com/questions/14394/ từ
richhallstoke

10
Bạn nên nói chuyện với 1and1.co.uk càng nhanh càng tốt! họ có thể chuyển trang web của bạn đến một trong những dịch vụ VPS có tỷ lệ cpu / ram / băng thông cao sẽ cho phép tăng đột biến! sau đó họ có thể giảm CPU / RAM để tiết kiệm tiền cho bạn
Simon Hayter

1
Bạn có đang sử dụng gói lưu trữ chia sẻ với 1 & 1 không? Nếu vậy, bạn thực sự cần phải xem xét một giải pháp thay thế (VPS rất mạnh hoặc lưu trữ dựa trên đám mây) càng sớm càng tốt. Tôi rất nghi ngờ bất kỳ môi trường lưu trữ chia sẻ có thể xử lý loại lưu lượng đó.
Sean

3
Tôi từng là một máy chủ web. Hầu hết các máy chủ lưu trữ có thể xử lý các đột biến như thế này khá dễ dàng nếu họ biết trước và có thể giúp bạn với một loạt các tùy chọn không được cung cấp thông thường. Lý do cho điều này là đơn giản. Họ có thể có sẵn các thiết bị như bộ nhớ đệm phần cứng, máy chủ bổ sung, tùy chọn cân bằng tải, tùy chọn chuyển đổi dự phòng, v.v. Ý tưởng là trông như thể họ có thể xử lý mọi thứ một cách duyên dáng. Nó là tốt cho kinh doanh. Hầu hết sẽ thiết lập các tùy chọn này lên mà không tính phí. Nó thực sự là một phần bình thường của kinh doanh.
Closnoc

Bạn muốn biết rằng có các công cụ để kiểm tra tải máy chủ nặng. Tôi không biết bất kỳ tên nào, nhưng chúng có thể dễ dàng tìm thấy. Tăng cường cài đặt và bạn có thể cung cấp cho mình bản kiểm tra có kiểm soát mà không cần tự tạo bản thân khi người thật xuất hiện :)
Martijn

Câu trả lời:


26

Trong thời gian lưu lượng truy cập cao, máy chủ của bạn sẽ có thể xử lý tất cả các yêu cầu của khách truy cập vào trang web của bạn. Nhưng có một số giới hạn trong các kết nối đồng thời được xử lý bởi máy chủ. Vì vậy, tốt nhất là phục vụ các yêu cầu trang càng nhanh càng tốt.

Dưới đây là một số gợi ý để xem xét trong những tình huống này,

Cải thiện cấp độ ứng dụng:

1. Giảm thiểu các yêu cầu HTTP để tăng tốc thời gian tải trang.

a) Kết hợp tất cả các tệp JS lại với nhau trong một tệp JS kết hợp và tất cả các tệp CSS trong một tệp CSS kết hợp.

b) Giảm thiểu các tệp JS và CSS, do đó kích thước tệp sẽ được giảm và nó sẽ được tải xuống nhanh hơn.

c) Sử dụng CSS Sprites - Khi bạn kết hợp hầu hết hoặc tất cả các hình ảnh của mình thành một sprite, bạn biến nhiều yêu cầu hình ảnh thành một. Sau đó, bạn chỉ cần sử dụng thuộc tính CSS hình nền để hiển thị phần hình ảnh bạn cần.

d) Trì hoãn tải xuống hình ảnh với tải chậm, điều này sẽ hữu ích để giảm các yêu cầu http.

2. Chuẩn bị các trang nhẹ đang mong đợi nhiều lượt truy cập hơn:

a) Loại trừ các yếu tố trang trí như hình ảnh hoặc Flash bất cứ khi nào có thể; sử dụng văn bản thay vì hình ảnh trong điều hướng trang web và chrome và đặt hầu hết nội dung trong HTML.

b) Sử dụng các trang HTML tĩnh thay vì các trang động; vị trí thứ hai tải nhiều hơn trên các máy chủ của bạn. Bạn cũng có thể lưu trữ đầu ra tĩnh của các trang động để giảm tải máy chủ.


Cải thiện cấp độ máy chủ:

1. Giảm giá trị thời gian chờ của máy chủ bằng cách tham khảo nhà cung cấp dịch vụ lưu trữ của bạn (không nên quá thấp).

Khi thời gian chờ thấp hơn, kết nối sẽ sớm được phát hành, do đó máy chủ sẽ có thể xử lý nhiều kết nối hơn.

2. Sử dụng các dịch vụ của bên thứ ba như CloudFlare để lưu trữ dữ liệu tĩnh và để bảo vệ trang web của bạn khỏi những người dùng độc hại và các cuộc tấn công như DDOS.

3. Nâng cấp phần cứng máy chủ của bạn - Nâng cấp bộ nhớ vật lý và ảo, tăng giới hạn quy trình I / O và Entry, nếu cần. Nhà cung cấp dịch vụ lưu trữ của bạn sẽ có thể giúp bạn tốt hơn.

4. Bộ đệm mã động - Sử dụng APC để lưu trữ mã opcode PHP.

5. Cân bằng tải - Phân phối tải trên nhiều máy chủ cân bằng tải.


  • Khi tất cả các hành động cần thiết được thực hiện, bây giờ là lúc kiểm tra xem trang web đã sẵn sàng cho một lưu lượng truy cập khổng lồ chưa.

    Có một số dịch vụ của bên thứ ba như loadimpact.com cung cấp thử nghiệm tải với lưu lượng mô phỏng. Phân tích sẽ giúp bạn hiểu trang web của bạn có thể tải bao nhiêu và những gì có thể được cải thiện.

  • Ngoài ra, trong thời gian tăng lưu lượng truy cập, tránh các hoạt động sử dụng CPU cao như cronjobs sao lưu trang web, v.v.


3
Đây là tất cả những điều liên quan đến trang web và tuyệt vời! Nhưng trừ khi bạn đã có 200.000 yêu cầu tấn công máy chủ của mình cùng một lúc, điều này có thể không đủ. Là một máy chủ web trước đây, tôi thường thích đưa lên một bộ đệm phần cứng lớn và chạy qua trang web đang tải bộ đệm. Tôi cũng sẽ sao chép trang web trên một số máy chủ ngay cả khi chúng được chia sẻ và thực hiện cân bằng tải bằng proxy hoặc tường lửa. Điều đó thường là đủ. Hầu hết mọi người không nhận ra rằng cổ chai lớn nhất thực sự là HD I / O. Tăng bộ nhớ và sử dụng nó cho bộ nhớ cache Apache và MySQL thực sự cũng có ích.
Closnoc

2
bạn được chào đón để cải thiện câu trả lời! :)
Nikhil Supekar

1
Tôi thích câu trả lời của bạn! Tôi đã bình chọn nó. Xin đừng xúc phạm. Tôi chỉ muốn chỉ ra một vài điều từ quan điểm của máy chủ web. Chỉ là một nhận xét. Không phải là một cú đánh. Một lần nữa, câu trả lời của bạn là tuyệt vời !! Tôi thường đề nghị liên hệ với chủ nhà bởi vì những điều này thỉnh thoảng xuất hiện và có những lựa chọn mà chủ nhà có thể làm điều đó sẽ giúp ích và không tốn bất cứ điều gì. Hầu hết các máy chủ đều vui mừng vì sự chú ý! Đối với tôi đó là một quá trình đơn giản vì phần cứng đã sẵn sàng. Tôi sẽ không mất nhiều thời gian để chuẩn bị trang web cho một sự kiện như vậy. ;-) Cảm ơn bạn đã mời.
Closnoc

1
Không có sự xúc phạm nào. Trên thực tế chúng tôi thực sự có thể sử dụng kinh nghiệm của bạn với phần cứng máy chủ.
Nikhil Supekar

1
Tôi đã nghỉ hưu từ ngành công nghiệp trong hơn một thập kỷ, ngoại trừ nghiên cứu cho các mạng tin cậy. Một điều mà tôi thích là nâng cấp bộ đệm cho Apache và MySQL hoặc các ứng dụng tương tự để giảm việc đóng đinh hệ thống phụ I / O. Tôi đã làm điều đó ở đây và nó thực sự có thể làm việc. Tôi cũng cảnh báo về quá nhiều bộ nhớ trên các hệ thống kể từ khi cửa hàng sao lưu tức là. bảo trì tập tin hoán đổi (et al.) có thể làm tăng triệt để các yêu cầu I / O có xu hướng chậm hơn. Có một điểm ngọt ngào, nhưng tôi không biết điểm ngọt ngào đó là gì nữa. Tôi nghi ngờ bạn là một chuyên gia nhiều hơn tôi. ;-)
Closnoc

7

Trước hết, tôi muốn giới thiệu Cloudflare. Bạn có thể tạo một tài khoản cơ bản miễn phí và nó sẽ định tuyến lưu lượng truy cập thông qua các trung tâm dữ liệu cục bộ để giảm thiểu số lượng bước nhảy máy chủ. Cloudflare cũng tuyệt vời cho bộ nhớ đệm nội dung và có bảo vệ DDOS.

Ngoài ra, hãy cố gắng cắt giảm chất béo từ lớp dịch vụ của bạn. Hãy chắc chắn rằng bạn không có bất kỳ truy vấn cơ sở dữ liệu quá mức nào làm tắc nghẽn mã của bạn hoặc bất kỳ logic chuyên sâu nào về CPU có thể được đơn giản hóa.

Cũng cố gắng lưu trữ bất kỳ truy vấn cơ sở dữ liệu. Một số tùy chọn tuyệt vời cho bộ nhớ đệm truy vấn là Redis hoặc Memcache. OpCaching là một cân nhắc khác nếu bạn đang sử dụng ngôn ngữ không được biên dịch.

Nhưng có lẽ quan trọng nhất là giữ cho nội dung tĩnh của bạn (ví dụ: css, js và hình ảnh) được tối ưu hóa nhất có thể. Giảm thiểu tất cả Javascript của bạn, kết hợp tất cả chúng vào một tệp nếu có thể. Hãy nhớ rằng mỗi tệp được đưa vào trang web của bạn, phải thực hiện một số bước nhảy máy chủ để tiếp cận người dùng cuối.

Đừng đánh giá thấp băng thông và thời gian tải bạn có thể tiết kiệm được thông qua việc nén hình ảnh!

Cuối cùng, hãy xem xét hiệu suất giám sát với các công cụ như Di tích mới.

May mắn nhất!!

Nguồn: Một trong những nhà phát triển cho trang web phổ biến thứ 12 ở Anh theo Alexa.


5

Xem xét tải thử nghiệm trang web của bạn. Có các công cụ miễn phí có sẵn như JMeter , Máy màiGatling , có thể mô phỏng số lượng lớn khách truy cập vào trang web của bạn.

Bằng cách kiểm tra tác động của lưu lượng truy cập lớn trước thời hạn, bạn có thể xác định liệu bất kỳ điều chỉnh nào bạn đã thực hiện có hiệu quả hay không và xem xét điều chỉnh thêm nếu không.


3

Nếu bạn đang ở trên 1and1, có thể bạn đang tìm kiếm hosting giá rẻ. Lưu trữ giá rẻ có nghĩa là bạn có xu hướng làm mọi thứ trong một hộp. Một điểm đau lớn khi lưu trữ là khi bạn lưu trữ mọi thứ trên cùng một hộp, bạn sẽ phân chia tài nguyên giữa các phần quan trọng của trang web của mình:

  • Máy chủ web của bạn (Apache, Nginx, v.v.)
  • Cơ sở dữ liệu của bạn (MySQL, PostGreSQL, v.v.)

Và là 1and1, rất có thể bạn đang sử dụng bảng điều khiển như Plesk hoặc cPanel, điều đó có nghĩa là bạn có thêm một lớp thứ để cạnh tranh tài nguyên. Và cái đinh cuối cùng trong quan tài của bạn? Bạn không có nhiều tài nguyên. Bạn có thể có 1 CPU (hoặc CPU ảo) và rất ít RAM (nếu bạn có nhiều hơn 2GB tôi sẽ ngạc nhiên).

Khi chúng tôi bỏ 1and1, chúng tôi đã đi với một nhà cung cấp dịch vụ lưu trữ có thể mở rộng (Dịch vụ web của Amazon trong trường hợp của chúng tôi) và chúng tôi đã làm một số điều mà trước đây chúng tôi không thể

  1. Amazon có các phiên bản riêng cho cơ sở dữ liệu (RDS) và vì vậy cơ sở dữ liệu của chúng tôi có tài nguyên để thở. Hầu hết các hệ thống RDBMS sống và thở trên RAM và đó là thứ chúng ta có thể nhận được rất nhiều. Bây giờ bạn cũng có thể cung cấp ổ SSD có I / O cao, làm cho điểm DB bị nghẹt (ghi dữ liệu) khác bớt đau đớn hơn.
  2. Chúng tôi có một bộ cân bằng tải với 2 máy chủ web. Với một phụ trợ DB khổng lồ, chúng tôi không cần giao diện người dùng cao cấp để chúng tôi có hai máy chủ cấp thấp hơn.
  3. Chúng tôi đã chuyển sang một cái gì đó có thể mang lại máy móc được cấu hình đầy đủ theo yêu cầu. Sử dụng một cái gì đó như Chef hoặc Puppet, bạn có thể dễ dàng thêm các máy chủ web mới và nó minh bạch 100% cho người dùng cuối của bạn nếu được thực hiện đúng. AWS cũng có Opsworks để bạn có thể xây dựng tập lệnh của mình trực tiếp vào AWS.
  4. Thay đổi kích thước cá thể của bạn theo yêu cầu. Đây là một mảnh quan trọng đối với chúng tôi. Nếu DB bị sa lầy, tôi có thể hạ nó xuống và khởi chạy lại như một cái lớn hơn trong vài phút. Vâng, nó sẽ liên quan đến thời gian chết nhưng một vài phút thời gian chết tốt hơn nhiều giờ của một trang web chậm khủng khiếp. Hoàn toàn sợ thời gian chết? Giữ một bản sao đọc trong cánh, sau đó đưa nó xuống, chuyển nó sang một ví dụ lớn hơn, thăng cấp thành chủ và bạn tránh mọi thời gian chết cho chi phí của một máy phụ.

AWS không phải là trò chơi duy nhất trong thị trấn (Azure, Rackspace, v.v.) nhưng đảm bảo 1and1 có thể mở rộng để đáp ứng nhu cầu của bạn.


1

Kiểm tra với ISP của bạn và xem nếu có giới hạn về băng thông của bạn. Nâng cấp gói lưu trữ của bạn nếu băng thông không đủ cho lưu lượng bạn mong đợi. Bạn không muốn hiển thị thông báo "Vượt quá giới hạn băng thông" cho khách truy cập của bạn.


1

Từ kinh nghiệm cá nhân của tôi, tôi đã biết rằng ngay cả VPS tốt nhất cũng có những hạn chế. Tôi đang đi cư sĩ thực sự ở đây.

Một trong những trang web thể thao của chúng tôi đã được lưu trữ trên VPS. Trong trận đấu giữa Pakistan và Ấn Độ, chúng tôi đã nhận được hơn 70.000 lượt truy cập. Chúng tôi đã có một VPS Inmotehosting với RAM 4GB và xử lý 2 giây, băng thông 1TB, lưu trữ SSD và các công cụ ưa thích khác đi kèm. Chúng tôi cũng đã có phiên bản trả phí của Cloudflare.

Đó chỉ là một nửa trong trận đấu và trang web đã bị sập. Nó không bao giờ được phát trực tiếp trong trận đấu và chúng tôi đã mất hơn 70.000 khách truy cập. Sau đó chúng tôi biết rằng băng thông của chúng tôi đã bị tiêu tốn và không có máy chủ nguồn không hoạt động, CDN hầu như vô dụng.

Bài học: Bên cạnh việc nhận VPS và điều chỉnh vào CND như Cloudflare, hãy thu nhỏ kích thước trang của bạn. Càng ít càng tốt. Bạn có thể sử dụng bộ nhớ đệm trang và thu nhỏ mã rất hữu ích trong việc xử lý lưu lượng.


1

Bạn đã không xác định "tất cả cùng một lúc" rất tốt. Giả sử bạn đang xem xét 200.000 khách truy cập duy nhất trong nửa giờ. Đó là 111 yêu cầu mỗi giây, không tính đến khách truy cập nhấp qua và mở thêm trang (mà bạn muốn, phải không?).

Điều đầu tiên tôi sẽ làm là những câu chuyện của Google về những người xử lý lượng lưu lượng truy cập tương tự. Nhiều người sẽ viết về trải nghiệm của họ trên blog của họ để giúp đỡ người khác. Bạn sẽ nhận thấy rằng thật khó để tìm thấy một câu chuyện về ai đó thực hiện nó trên lưu trữ được chia sẻ và có một lý do cho điều đó. Nhìn vào các giải pháp như Digital Ocean hoặc Amazon Web Services, để bắt đầu, sử dụng trung tâm dữ liệu gần nhất với khán giả của bạn. Và tôi đồng ý rằng việc giảm tải tất cả tài nguyên tĩnh của bạn cho CloudFlare, thậm chí là một tài khoản miễn phí, là một ý tưởng tuyệt vời.

Ngoài ra, hãy kiểm tra mã của bạn bằng cách thêm các tập lệnh thời gian vào đầu và cuối trang, giả sử chúng là động. Giả sử giả định của tôi về các con số là chính xác, bạn sẽ cần có thể phục vụ mỗi trang trong dưới 10 mili giây để duy trì bất kỳ loại hiệu suất chấp nhận được nào. Nếu bạn đang phục vụ tất cả các yêu cầu thông qua SSL theo mặc định, hãy vô hiệu hóa điều đó trong một vài ngày trong khi cơn bão đi qua.

Ngoài ra, 200.000 âm thanh rất đáng sợ, nhưng hãy nhớ rằng bạn không cần phải quá sợ hãi (mặc dù bạn nên, một chút). Ví dụ, khi tạp chí Paper công bố ảnh NSFW của Kim Kardashian, chỉ cần bốn máy chủ web cỡ trung bình và ELB của Amazon để xử lý tải, theo bài viết này (SFW). Tôi chắc chắn không nghĩ rằng thiết lập hiện tại của bạn sẽ xử lý nó, nhưng bạn không cần chính xác mười sáu máy chủ web với 48 lõi được cung cấp bởi máy phát hạt nhân nhỏ của riêng họ.


1

Biết câu hỏi cũ, nhưng rất hay này và ước gì tôi có thông tin tốt về chủ đề vài năm trước ...

Thỉnh thoảng chúng tôi có các trang web (liên quan đến hoạt động của trường) nổi bật trên các mạng TV. Vì chúng tôi hoạt động với ngân sách rất eo hẹp, "cân bằng tải" là giải pháp. Những hộp VPS có thể có giá khá rẻ trong những ngày này và chúng tôi chỉ phản chiếu / sao chép nội dung của chúng tôi trên 2-3 trong số chúng.

Nhìn vào bài viết này và đọc về "vòng tròn".

Thông tin thêm về thử nghiệm tải có thể được tìm thấy ở đây .

Khi chúng tôi lần đầu tiên bắt đầu cố gắng xử lý các đột biến, chúng tôi chỉ cần có nội dung của chúng tôi trên 2-3 hộp VPS và đặt NS của chúng trong cài đặt đăng ký.


0

Tốt nhất là có các máy chủ chuyên dụng với nhiều cụm sẽ giải quyết vấn đề của bạn


0

Chúc may mắn viết lại trang web của bạn, chuyển đổi nhà cung cấp và di chuyển nội dung sang CDN trong vòng chưa đầy một tuần.

Như bạn có thể nhận ra từ các câu trả lời khác, đây là những điều tối thiểu bạn cần làm để trang web của bạn sẵn sàng cho lưu lượng truy cập tăng mạnh. Mặc dù nếu bạn hiện đang chạy trên 1and1.co.uk, có lẽ bạn không có một đội ngũ kỹ sư mạng, DBA, lập trình viên và tối ưu hóa giao diện người dùng mạnh mẽ làm việc cho bạn.

Nó không có khả năng xảy ra, phải không?

Bạn đã không nói những gì bạn làm với trang web của bạn, cho dù nó chạy giỏ hàng hay liệu nó có thể được thực hiện với nội dung tĩnh hay không. Nếu trường hợp sau xảy ra, thì bạn có thể sống sót sau thảm họa sóng thần nếu bạn quét toàn bộ trang web thành các tệp tĩnh và xuất bản chúng thay cho trang web thông thường (trước tiên hãy sao lưu phiên bản hiện tại).

Bạn cũng nên nói chuyện với 1and1 (với thẻ tín dụng trong tay).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.