Giải thích dịch vụ HTTP 503 không khả dụng: Nguyên nhân và Cách khắc phục

Giải thích HTTP 503 Dịch vụ không khả dụng

API Thu thập Dữ liệu Toàn cầu Không có sự thu thập lấy các trang web công cộng thông qua một công cụ mở khóa web được quản lý và trả về nội dung trang cho các quy trình dữ liệu cần phân loại các lỗi HTTP chính xác.

Tóm lại

  • Một 503 có nghĩa là dịch vụ hiện đang không khả dụng. Máy chủ phản hồi hiểu yêu cầu nhưng không thể xử lý nó vào thời điểm đó.
  • Quá tải và bảo trì là nguyên nhân phổ biến. Mất phụ thuộc, các phiên đã bị kiệt sức và kiểm soát tiếp nhận có thể tạo ra trạng thái giống nhau.
  • Người sản xuất phản hồi cũng quan trọng. Một CDN, bộ cân bằng tải, proxy ngược, ứng dụng hoặc lớp bảo trì có thể phát ra 503 hiển thị.
  • Năng lực phải được đo lường tại tài nguyên bị hạn chế. Nhiều phiên front-end không giúp ích khi bể kết nối cơ sở dữ liệu hoặc hàng đợi đã bão hòa.
  • Các hệ thống tự động nên tạm dừng công việc bị ảnh hưởng. Một 503 là bằng chứng rằng dịch vụ không sẵn sàng, không phải là lời mời để tăng áp lực yêu cầu.

Một 503 Là Quyết Định Khả Năng Rõ Ràng

Phản hồi 503 khác với một cuộc trò chuyện bị lỗi với máy chủ phía trên. Nó là câu trả lời HTTP hợp lệ thông báo rằng dịch vụ phản hồi không thể xử lý yêu cầu lúc này. Câu trả lời đó có thể đến từ một ứng dụng không có công nhân miễn phí, một bộ cân bằng tải không có mục tiêu khỏe mạnh, một trang bảo trì hoặc một nền tảng biên bảo vệ một nguồn quá tải.

Từ không khả dụng mô tả trạng thái dịch vụ, không phải sự tồn tại của tài nguyên. Trang được yêu cầu vẫn có thể là thật và có thể quay trở lại bình thường khi trạng thái sẵn sàng được phục hồi. Vì vậy, khách truy cập cần một phản hồi hạn chế, trong khi các nhà điều hành cần xác định tài nguyên hoặc phụ thuộc đã khiến dịch vụ từ chối công việc.

Các nhà thu thập dữ liệu nên giữ gìn sự phân biệt này. Một trang 503 thường chứa điều hướng tinh tế và thông điệp thân thiện, nhưng không phải là nội dung được yêu cầu. Xác minh trạng thái giúp ngăn trang đó không lọt vào bộ dữ liệu và tránh tăng tải trong một sự kiện khả dụng.

Ý nghĩa của Dịch vụ HTTP 503 không khả dụng

HTTP 503 Dịch vụ không khả dụng có nghĩa là máy chủ hiện không thể xử lý yêu cầu do quá tải tạm thời hoặc bảo trì theo lịch. Thông số kỹ thuật về Ngữ nghĩa HTTP định nghĩa trạng thái như một điều kiện phía máy chủ và phân biệt nó với sự vắng mặt vĩnh viễn hoặc thất bại xác thực của khách hàng.

Một 503 cố ý rất rộng. Nó có thể đại diện cho năng lực công nhân bị cạn kiệt, một phụ thuộc không khả dụng, một triển khai đã xóa tất cả các phiên sẵn sàng, một công tắc bảo trì, hoặc một điều khiển lưu lượng ở cấp nền tảng. Phản hồi chỉ ra không tiết lộ thành phần bị hạn chế, vì vậy chẩn đoán bắt đầu bằng việc xác định lớp nào đã tạo ra nó.

Cách mà một Dịch vụ Quyết Định Nó Không Thể Chấp Nhận Công Việc

Các dịch vụ chấp nhận công việc thông qua một số cổng. Một lớp biên kiểm tra chính sách, một bộ cân bằng tải kiểm tra sức khỏe mục tiêu, một proxy ngược kiểm tra năng lực kết nối, và ứng dụng kiểm tra công nhân, hàng đợi, các phụ thuộc, và trạng thái bảo trì. Bất kỳ một trong các lớp đó có thể quyết định rằng việc chấp nhận một yêu cầu khác sẽ thất bại hoặc làm trầm trọng thêm tình trạng.

Thiết kế độ sẵn sàng tốt loại bỏ một phiên khỏi dịch vụ trước khi nó trở nên không thể phản hồi đúng cách. Một bộ cân bằng tải có thể sau đó không có mục tiêu đủ điều kiện và tự phát ra 503. Trong một kiến trúc khác, ứng dụng vẫn có thể truy cập nhưng cố ý trả về 503 vì một cơ sở dữ liệu quan trọng hoặc API nội bộ không khả dụng.

Nội dung và tiêu đề có thể tiết lộ người sở hữu. Thương hiệu phía biên gợi ý một lớp bên ngoài, trong khi ID tương quan cụ thể của ứng dụng gợi ý rằng yêu cầu đã đến mã. Cửa sổ bảo trì có thể sử dụng một phản hồi tĩnh do một hệ thống riêng phục vụ. Những manh mối đó nên được ghi lại trước khi thay đổi năng lực hoặc định tuyến.

LớpĐiều gì cần kiểm traTại sao điều đó quan trọng
Biên hoặc CDNThương hiệu cung cấp, sức khỏe nguồn, sự kiện vùngCho thấy liệu yêu cầu có dừng lại trước nguồn hay không
Bộ cân bằng tảiSố lượng mục tiêu khỏe mạnh, trạng thái thoát, bể tuyếnTiết lộ xem liệu có phiên nào đủ điều kiện hay không
Ứng dụngSử dụng công nhân, độ sâu hàng đợi, cờ bảo trìGiải thích một sự từ chối cố ý bên trong dịch vụ
Phụ thuộcBể kết nối, sức khỏe, bão hòaTìm ra một ràng buộc phía hạ lưu bị ẩn sau một giao diện trước khỏe mạnh

Các Điều Kiện Gây Ra Một 503

Trạng thái giống nhau có thể bảo vệ một dịch vụ trong thời gian bảo trì được lên kế hoạch hoặc tiết lộ một thất bại năng lực không mong muốn, vì vậy bối cảnh và các chỉ số phải xác định điều kiện nào áp dụng.

Bảo trì được lên kế hoạch

Một bộ điều khiển bảo trì hoặc quy tắc tĩnh có thể trả về 503 trong khi một triển khai, di chuyển, hoặc sửa chữa đang tiến hành. Người sở hữu nên làm cho cửa sổ và phạm vi bị ảnh hưởng trở nên rõ ràng với các nhóm hỗ trợ.

Cạn kiệt công nhân hoặc luồng

Mỗi vị trí yêu cầu có thể bị chiếm bởi công việc chậm. Quy trình vẫn sống nhưng không thể chấp nhận thêm công việc trong giới hạn đồng thời hoặc hàng đợi đã được cấu hình.

Không có mục tiêu khỏe mạnh

Một bộ cân bằng tải có thể có một bể sẵn sàng trống vì các phiên bản đang khởi động, xả nước, thất bại kiểm tra sức khỏe hoặc được đăng ký dưới tuyến đường sai.

Sự phụ thuộc quan trọng không có sẵn

Một ứng dụng có thể từ chối các yêu cầu khi cơ sở dữ liệu, bộ nhớ đệm, nhà cung cấp danh tính hoặc API nội bộ của nó chưa sẵn sàng. CPU phía trước có thể trông bình thường trong khi sự phụ thuộc là rào cản thực sự.

Kiểm soát nhập học

Kiểm soát tỷ lệ, bảo vệ mạch, hoặc giới hạn hàng đợi có thể phát hành 503 để giữ một dịch vụ bị căng thẳng không bị sụp đổ. Trạng thái sau đó là một quyết định bảo vệ, không phải là một sự thất bại ngẫu nhiên.

Khoảng cách sẵn sàng triển khai

Thay thế tất cả các phiên bản cũ trước khi các phiên bản mới vượt qua kiểm tra sẵn sàng tạo ra một khoảng thời gian không có khả năng đủ điều kiện. Thứ tự phát hành và thiết kế kiểm tra sức khỏe xác định liệu người dùng có thấy khoảng cách đó hay không.

Tìm Lớp Từ Chối Yêu Cầu

Một cuộc điều tra 503 nên tìm lớp sớm nhất đã đưa ra quyết định về khả năng và sau đó xác định tài nguyên đã thông báo cho nó.

  1. Ghi lại phản hồi chính xác. Ghi lại thời gian, tên máy chủ, đường dẫn, khu vực, tiêu đề phản hồi, thương hiệu cơ thể, và một định danh yêu cầu trước khi trạng thái dịch vụ thay đổi.
  2. Xác định phạm vi. Kiểm tra một điểm cuối sức khỏe nhẹ nhàng, một tuyến đường khác, và một khu vực khác. Một lỗi ở điểm cuối hẹp chỉ ra một sự phụ thuộc hoặc bể; một lỗi rộng chỉ ra hạ tầng chia sẻ.
  3. Định vị nhà sản xuất phản hồi. So sánh nhật ký biên, cân bằng tải, proxy và ứng dụng. Lớp đầu tiên ghi lại một 503 cố ý sở hữu bước chẩn đoán tiếp theo.
  4. Kiểm tra khả năng sẵn sàng. Đếm số lượng phiên bản đủ tiêu chuẩn và xác minh lý do tại sao bất kỳ cái nào bị loại bỏ. Số lượng quy trình đơn thuần là gây hiểu nhầm nếu các bài kiểm tra sẵn sàng thất bại hoặc các phiên bản đang xả.
  5. Kiểm tra tài nguyên bị ràng buộc. Xem xét việc sử dụng công nhân, tình trạng hàng đợi, kết nối cơ sở dữ liệu, bộ nhớ, mô tả tệp, và sức khỏe phụ thuộc thay vì chỉ dựa vào CPU trung bình.
  6. So sánh sự kiện bảo trì và triển khai. Xác nhận liệu một chuyển đổi, di chuyển, hành động tự động mở rộng, hoặc phát hành đã chồng lên thời gian lỗi đầu tiên.
  7. Giảm nguồn cầu không an toàn. Tạm dừng các công việc theo lô và tự động hóa không thiết yếu nhắm vào dịch vụ bị ảnh hưởng để cuộc điều tra không làm tăng thêm áp lực.

Định nghĩa trong HTTP Semantics, ghi chú thực hiện trong MDN's 503 reference, và kiểm tra nguồn so với biên trong Cloudflare's 503 guidance tất cả hỗ trợ coi 503 như một tín hiệu sẵn sàng và khả năng.

Những gì Người Thăm có thể làm mà không làm hại dịch vụ

Người thăm có quyền kiểm soát hạn chế đối với trạng thái khả dụng phía máy chủ, và các yêu cầu nhanh lặp lại có thể làm tình trạng quá tải thêm tồi tệ hơn.

  • Kiểm tra trang trạng thái dịch vụ. Một thông báo bảo trì hoặc sự cố đã công bố có thể cung cấp thông tin hơn là liên tục làm mới trang thất bại.
  • Bảo tồn công việc chưa lưu. Nếu một biểu mẫu hoặc giao dịch thất bại, hãy giữ lại đầu vào địa phương và xác nhận trạng thái máy chủ trước khi gửi lại.
  • So sánh một trang nhẹ. Trang chính hoặc điểm cuối trạng thái có thể cho thấy liệu vụ ngoại tuyến có ảnh hưởng đến một tính năng hay toàn bộ dịch vụ.
  • Gửi cho hỗ trợ một khóa tương quan. Bao gồm ID yêu cầu, thời gian, tuyến đường, và khu vực mà không chia sẻ thông tin xác thực hoặc payload riêng tư.

Khôi phục khả năng và sẵn sàng

Các nhà vận hành nên khôi phục một bao bì dịch vụ khỏe mạnh, sau đó sửa chữa điều khiển hoặc sự phụ thuộc đã làm cạn kiệt nó.

Nếu không có mục tiêu nào khỏe mạnh, hãy kiểm tra các thất bại về sẵn sàng trước khi thêm lưu lượng. Một bài kiểm tra sức khỏe nghiêm ngặt có thể loại bỏ các phiên bản tốt, trong khi một bài kiểm tra nông có thể giữ các phiên bản hỏng vẫn đủ điều kiện. Bài kiểm tra nên đại diện cho các sự phụ thuộc cần thiết cho tuyến đường mà không biến mỗi sự phụ thuộc tùy chọn thành một tác nhân gây ra tình trạng ngưng tụ toàn cầu.

Nếu dịch vụ bị bão hòa, hãy xác định tài nguyên khan hiếm. Độ sâu hàng đợi, tình trạng công nhân, việc sử dụng kết nối cơ sở dữ liệu, thời gian khóa, và độ trễ hạ nguồn cho thấy nơi nhu cầu đang tích lũy. Mở rộng sai cấp độ có thể tăng cường cạnh tranh và làm cho tỷ lệ 503 không thay đổi.

Sau khi phục hồi, tách biệt phản hồi bảo trì khỏi phản hồi quá tải trong các chỉ số. Theo dõi trạng thái theo nhà sản xuất, lộ trình, khu vực và sự phụ thuộc. Cảnh báo về dung lượng nên được kích hoạt trước khi mỗi khe yêu cầu bị tiêu thụ, và chính sách triển khai nên duy trì một hồ bơi sẵn sàng trong suốt quá trình triển khai.

Phân biệt 503 với 429, 502 và 504

Các trạng thái gần đó trả lời các câu hỏi khác nhau về khả năng sẵn có, tải và giao tiếp upstream.

Tín hiệuÝ nghĩa có thểChủ sở hữu tiếp theo
503 Dịch vụ không khả dụngDịch vụ hiện không thể xử lý yêu cầuChủ sở hữu độ sẵn sàng, dung lượng hoặc bảo trì
429 Yêu cầu quá nhiềuMột khách hàng hoặc hạn ngạch đã vượt quá tỷ lệ yêu cầu cho phépChủ sở hữu lưu lượng khách hàng hoặc hạn ngạch
502 Cổng xấuCổng đã nhận được phản hồi upstream không hợp lệChủ sở hữu dịch vụ định tuyến hoặc upstream
504 Hết thời gian chờ cổngCổng đã chờ quá thời gian ngân sách upstream của nóChủ sở hữu độ trễ và sự phụ thuộc

Xử lý phản hồi 503 trong các hệ thống thu thập

Thu thập web công cộng nên coi 503 là tín hiệu dừng cho mục tiêu và khối lượng công việc bị ảnh hưởng. Tài liệu API thu thập toàn cầu không có phế liệu miêu tả bề mặt truy xuất được quản lý, trong khi người thu thập vẫn chịu trách nhiệm xác thực rằng một phản hồi chứa trang dự kiến.

Ghi lại trạng thái, người sản xuất phản hồi, URL cuối cùng, thời gian yêu cầu và dấu vân tay nội dung. Giữ tài liệu lỗi bên ngoài tập dữ liệu, đánh dấu URL là không khả dụng, và để các điều khiển khối lượng công việc giảm áp lực. Đừng chuyển đổi một trang bảo trì thân thiện thành một khai thác thành công chỉ vì nó chứa HTML hợp lệ.

Đối với các dịch vụ đã sở hữu, các kiểm tra tổng hợp nên sử dụng tần suất có giới hạn và một điểm cuối rẻ. Đối với các dịch vụ bên thứ ba, tôn trọng các quy tắc truy cập đã công bố và hướng dẫn sự cố. Giám sát khả năng sẵn có nên quan sát hệ thống mà không trở thành một phần thiết yếu trong nhu cầu của nó.

Coi 503 như một Tín hiệu Khả năng Sẵn có

HTTP 503 Dịch vụ không khả dụng là một tuyên bố hợp lệ rằng dịch vụ hiện không sẵn sàng để xử lý yêu cầu. Nó thu hẹp vấn đề xuống khả năng, bảo trì, độ sẵn sàng, sức khỏe sự phụ thuộc, hoặc một kiểm soát lưu lượng bảo vệ.

Tìm lớp đã tạo ra phản hồi, đo lường tài nguyên đã hạn chế nó, khôi phục dung lượng sẵn có và giữ nhu cầu tự động bị hạn chế. Cách tiếp cận đó sửa chữa trạng thái dịch vụ thay vì coi trang trạng thái là vấn đề.

Sẵn sàng làm cho các lỗi HTTP dễ phân loại hơn?

Xây dựng một quy trình làm việc thu thập web công cộng ghi lại các bằng chứng xung quanh HTTP 503 thay vì coi mỗi lần lấy không thành công như cùng một sự kiện.

Đăng ký hôm nay và nhận $5 tín dụng miễn phíkhông cần thẻ tín dụng.

Nhận $5 Tín dụng của bạn →

Câu hỏi thường gặp

Liệu lỗi 503 có vĩnh viễn không?

Lỗi 503 thường miêu tả một điều kiện khả năng sẵn có hiện tại thay vì loại bỏ tài nguyên vĩnh viễn. Dịch vụ có thể phục hồi sau khi bảo trì, khôi phục dung lượng hoặc sửa chữa sự phụ thuộc, nhưng phản hồi bản thân không hứa hẹn một thời gian phục hồi cụ thể.

Sự khác biệt giữa 503 và 429 là gì?

Một 503 nói rằng dịch vụ hiện không thể xử lý yêu cầu, trong khi 429 nói rằng khách hàng hoặc hạn ngạch đã gửi quá nhiều yêu cầu theo chính sách đã xác định. Cả hai đều yêu cầu giảm nhu cầu, nhưng chúng chỉ ra các quyền sở hữu và kiểm soát khác nhau.

CDN có thể trả về 503 không?

Một CDN có thể trả về 503 vì edge của nó không khả dụng, vì nó không thể sử dụng nguồn gốc, hoặc vì một chính sách được cấu hình chọn phản hồi bảo trì hoặc quá tải. Thương hiệu phản hồi và chẩn đoán nhà cung cấp giúp xác định trường hợp nào áp dụng.

Liệu các nhà thu thập tự động có nên tiếp tục trong một sự kiện 503 không?

Các nhà thu thập tự động nên tạm dừng công việc bị ảnh hưởng và bảo tồn 503 như bằng chứng chẩn đoán. Tăng áp lực yêu cầu có thể làm xấu đi tình trạng quá tải, trong khi phân tích trang bảo trì có thể ô nhiễm tập dữ liệu.

Tại sao CPU có thể trông bình thường trong một sự cố 503?

CPU có thể trông bình thường khi tài nguyên bị hạn chế là một nhóm công nhân, hàng đợi, nhóm kết nối cơ sở dữ liệu, khóa, giới hạn mô tả tập tin, hoặc sự phụ thuộc không khả dụng. Chẩn đoán phải đo lường tài nguyên điều khiển độ sẵn sàng, không phải một chỉ số chung của máy chủ.

Tài liệu tham khảo