Chuyển hướng khách truy cập khi trang web quá bận rộn


7

Chúng tôi đang mong đợi một lưu lượng truy cập tăng đột biến đến trang web của chúng tôi trong tuần này. Nếu trang web trở nên quá tải (tức là khách truy cập đang gặp lỗi 503), tôi muốn chuyển hướng khách truy cập đến một địa chỉ web khác. Tôi sẽ đi đâu để tới đó?


1
Bạn đã tải thử nghiệm hệ thống hiện tại của bạn? Tôi hỏi điều này bởi vì tôi đã có một máy chủ Cobalt 3 một thập kỷ trước với một trang web hoàn toàn năng động xử lý 100.000 yêu cầu trang mỗi giờ. Đó là 2,4 triệu mỗi ngày! Nó đã đủ đáp ứng và có các trang web khác trên máy chủ. Tất nhiên hệ thống không nhanh như bình thường, nhưng nó xử lý các yêu cầu khá tốt. Một ví dụ khác: Tôi đã quản lý một trang web chỉ có 3 máy chủ CPU Xeon 4x200Mhz với bộ nhớ 4gig xử lý nhiều lưu lượng như Microsoft. Bạn có thể ở trong tình trạng tốt hơn bạn nghĩ.
Closnoc

Có quá muộn để chỉ cần quay một ví dụ amazon và đẩy di chuyển trang web của bạn ra khỏi đó không? Đây là một ứng dụng web hay chỉ là một trang web thông tin? Nếu sau này, nó sẽ mất rất nhiều để gỡ xuống một máy chủ như Closnoc lưu ý.
NotMe

Bạn đang chạy trên máy chủ nào? IIS? Apache?
Zhaph - Ben Duguid

Câu trả lời:


10

Khi trang web của bạn quá bận rộn do lưu lượng truy cập lớn, cách chuyển hướng tốt nhất là sử dụng các tài liệu lỗi tùy chỉnh. Vì vậy, khi người dùng nhận được mã lỗi 503, máy chủ sẽ chuyển hướng khách truy cập đến trang tài liệu lỗi tùy chỉnh mà bạn đã xác định.

Có nhiều cách khác nhau để các máy chủ khác nhau tùy chỉnh các trang tài liệu lỗi.

1. Đối với máy chủ Apache , hãy thêm đoạn mã sau vào .htaccesstệp.

ErrorDocument 503 http://example.com/maintenance.html

2. Đối với máy chủ IIS 7 , hãy thêm đoạn mã sau vào web.config

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="503" />
        <error statusCode="503" responseMode="Redirect" 
               path="http://example.com/maintenance.htm" />
    </httpErrors>
</system.webServer>

Tham chiếu CustomError trong web.config

3. Đối với máy chủ Tomcat 7 , hãy thêm đoạn mã sau vào WEB-INF/web.xmltệp.

<error-page>
    <error-code>503</error-code>
    <location>/Error.jsp</location>
</error-page>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/Error.jsp</location>
</error-page>

Tham chiếu Trang lỗi tùy chỉnh trong Tomcat 7


Tôi thấy rằng bạn vừa thêm mã cho IIS và Tomcat 7, tuy nhiên chỉ có lệnh Apache của bạn sẽ phát hành chuyển hướng. Những cái khác chỉ là cách hiển thị một trang lỗi tùy chỉnh.
Stephen Ostermiller

hmm..bạn đã đúng Tôi chưa làm việc trên các máy chủ đó. Vì vậy, không biết cách tốt nhất. Vì vậy, tôi đã cố gắng hoàn thành câu trả lời của mình với điều tốt nhất tôi có thể làm.
Nikhil Supekar

1
Đối với IIS, bạn có thể thay đổi responseModetừ Fileđến Redirectvà sau đó chỉ định một URL tuyệt đối cho phép bạn gửi các yêu cầu đến một máy chủ khác.
Zhaph - Ben Duguid

5

Có vẻ như bạn đang nhắm đến kết quả tồi tệ thứ hai. Nếu bạn đang mong đợi một sự tăng đột biến, bạn có thời gian để làm một cái gì đó:

  • Triển khai bộ nhớ đệm trong mã (có thể dễ dàng, có thể mất một lúc để thực hiện đúng)
  • File Optimize tĩnh ( jpegoptim, optipng, more-css, vv) để giảm băng thông, điều tốc độ lên cho tất cả người dùng.
  • Chuyển nội dung tĩnh của bạn sang CDN để xóa hoàn toàn các yêu cầu đó khỏi mạng của bạn.
  • Nếu tất cả đều tĩnh, hãy sao chép trang web vào một vài máy tính khác và sử dụng bộ cân bằng tải để duy trì trang web dưới một IP. Nghe có vẻ đắt tiền nhưng nhiều nhà cung cấp VPS sẽ cung cấp cho bạn một thiết lập như thế với giá khoảng 20 đô la một tuần.
  • Hoặc xem các dịch vụ bộ nhớ đệm mặt trước của CloudFlare (et al). Ngay cả một người mới có thể thực hiện những điều này trong vài phút nhưng nó sẽ không giúp ích nhiều nếu bạn có một trang web rất năng động.

Chỉ cần chuẩn bị mọi thứ để bạn biết rằng nếu mọi thứ tan vỡ, bạn đã làm mọi thứ để đảm bảo những người dùng đó có được thứ họ muốn lần đầu tiên . Lập kế hoạch để thất bại không phải là một thực tiễn xấu nhưng hãy nhìn vào các lựa chọn để tránh thất bại ngay từ đầu!

Nhưng vâng, tùy chọn tiêu chuẩn tốt nhất (mà bạn nên triển khai) là tùy chỉnh các trang lỗi của bạn để mọi người biết có điều gì đó không ổn đang xảy ra. Tôi nên chỉ ra rằng hầu hết mọi người phản ứng rất tiêu cực với những điều này. Nếu thông báo là "vui lòng quay lại sau" chỉ mong một phần của một phần nhỏ được trả về.

Vì vậy, một lần nữa, đây là một cơ hội lý tưởng để xem lại cách trang web được lưu trữ và nếu không có gì khác có kế hoạch [thực hành] để trao đổi sang phần cứng tốt hơn trong vòng một giờ thất bại.


3

Có những điều bạn có thể làm ở một số cấp độ:

Cấp mạng

  1. Phần cứng mạng: Cài đặt bộ cân bằng tải, với các máy chủ bổ sung phía sau nó. Điều này sẽ cho phép bạn chạy thiết lập hiện tại của mình khá dễ dàng, nhưng có thể sẽ tốn khá nhiều tiền để thiết lập trong khung thời gian bạn có (tùy thuộc vào mức hỗ trợ của nhà cung cấp dịch vụ lưu trữ của bạn)

  2. Phần cứng ảo: Chuyển sang hệ thống dựa trên đám mây có tích hợp cân bằng tải. Điều này sẽ mang lại cho bạn những lợi ích của tùy chọn 1, mà không phải trả chi phí thiết lập quá lớn với máy chủ của bạn (bạn chỉ phải trả cho những gì bạn sử dụng), tuy nhiên điều này có thể mất thời gian về phía bạn để thiết lập.

Đây có lẽ là những lựa chọn "tốt nhất" để giải quyết vấn đề này, và rất cố gắng và đáng tin cậy, nhưng chúng có chi phí tài chính - đặc biệt là cho điểm 1.

Tuy nhiên, cả hai đều có thể được cấu hình để xử lý tình huống "trường hợp xấu nhất" của bạn là "Máy chủ của chúng tôi không thể đối phó" - bộ cân bằng có thể được cấu hình để định tuyến tất cả lưu lượng truy cập đến một máy chủ chỉ giữ một trang phẳng cho biết trang hiện đang ngừng hoạt động, nhưng đây là một chút thông tin.

Cấp độ phần mềm

Ngoài các phương pháp được nêu trong các câu trả lời khác, hầu hết các máy chủ đều cho phép bạn thiết lập các trang lỗi theo một số cách - thông thường đây là một trang trên trang web, tuy nhiên bạn cũng có thể đưa ra chuyển hướng đến một trang trên một máy chủ khác nhau là tốt.

Ví dụ, trong IIS, bạn có thể tạo phản hồi lỗi "Phản hồi với chuyển hướng 302" - đây có thể là một URL trên một máy chủ hoàn toàn khác - bạn có thể thực hiện việc này ở cấp trang lỗi .net hoặc cấp lỗi IIS:

.mạng lưới

<customErrors mode="RemoteOnly">
  <remove statusCode="503" />
  <error redirect="htp://www.example.com/sitedown.html" statusCode="503" />
</customErrors>

IIS

Đặt lỗi chuyển hướng trong IIS


0

Nếu bạn đang sử dụng apache: Tìm kiếm thư mục gốc của bạn cho tệp có tên "htaccess.txt" hoặc ".htaccess". Thêm dòng sau:

ErrorDocument 503 http://www.example.com/customhtml.html

Bạn có khách truy cập của bạn được chuyển hướng đến customhtml.html. Bạn có thể thêm iframe của "địa chỉ web khác" của mình vào mã HTML.


1
Tôi không nghĩ rằng điều này thực sự khác với câu trả lời của Nikhil Supekar.
Stephen Ostermiller

0

Tôi sẽ đề nghị đi đến nhiều máy chủ để giải quyết vấn đề này, nơi các máy chủ được kết nối ở định dạng clustred. Vì vậy, trong trường hợp tải máy chủ tăng cao, lưu lượng của bạn sẽ được chuyển hướng sang máy chủ thứ hai, v.v.

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.