Giải thích lỗi Gateway Timeout HTTP 504: Chẩn đoán và sửa lỗi

Giải thích lỗi Gateway Timeout HTTP 504

API Scraping Universal không bị cản trở lấy các trang web công cộng thông qua một bộ mở khóa web được quản lý và trả lại nội dung trang cho các quy trình dữ liệu cần phân loại các lỗi HTTP một cách chính xác.

Tóm lại;

  • Một lỗi 504 có nghĩa là một gateway không nhận được phản hồi kịp thời từ phía trên. Bên trung gian đã chờ một máy chủ khác cần thiết để hoàn tất yêu cầu và ngân sách thời gian của nó đã hết hạn.
  • Thành phần chậm thường nằm sau gateway. Công việc ứng dụng, truy vấn cơ sở dữ liệu, nhóm kết nối, DNS, đường mạng và API bên ngoài tất cả có thể tiêu tốn ngân sách.
  • Mỗi lớp đều có đồng hồ của riêng nó. CDN, cân bằng tải, proxy ngược, client ứng dụng và giới hạn cơ sở dữ liệu có thể hết hạn theo một thứ tự che giấu nút cổ chai thực tế.
  • Thời gian chờ dài hơn không phải là một sửa chữa nguyên nhân gốc. Nó có thể phù hợp sau khi công việc được hiểu rõ, nhưng nó cũng có thể giữ tài nguyên lâu hơn và di chuyển lỗi ra ngoài.
  • Người thu thập dữ liệu phải xác thực trạng thái và nội dung. Một trang gateway trông hoàn chỉnh vẫn là một kết quả không khả dụng, không phải dữ liệu mục tiêu.

Lỗi 504 là một lỗi thời gian giữa các máy chủ

Lỗi 504 xuất hiện sau khi một bên trung gian đã dành thời gian chờ đợi một máy chủ phía sau nó. Gateway có thể chấp nhận yêu cầu của trình duyệt và chuyển hướng nó, nhưng công việc phía trên không tạo ra phản hồi cần thiết trong khoảng thời gian được cấu hình của gateway. Thời gian đã trôi qua vì vậy là bằng chứng, không chỉ là một bất tiện.

Các đường yêu cầu hiện đại chứa nhiều bộ hẹn giờ. Một CDN chờ đợi một nguồn gốc, một cân bằng tải chờ đợi một proxy, proxy chờ đợi một ứng dụng, ứng dụng chờ đợi một cơ sở dữ liệu, và cơ sở dữ liệu chờ đợi lưu trữ hoặc khóa. Bộ hẹn giờ đầu tiên hết hạn tạo ra triệu chứng công khai ngay cả khi một thành phần sâu hơn vẫn bận rộn.

Sửa chữa đúng là tái tạo dòng thời gian đó và tìm ra nơi thời gian đã được tiêu tốn. Tăng mọi giới hạn có thể làm tăng mức độ kết nối và che giấu các vấn đề năng lực. Một cuộc điều tra hữu ích đo lường mỗi bước nhảy, so sánh các yêu cầu thành công và thất bại, và kiểm tra xem công việc dài có thuộc về một yêu cầu trang đồng bộ hay không.

Ý nghĩa của lỗi Gateway Timeout HTTP 504

Lỗi Gateway Timeout HTTP 504 có nghĩa là một máy chủ hoạt động như một gateway hoặc proxy không nhận được phản hồi kịp thời từ một máy chủ phía trên cần thiết để hoàn tất yêu cầu. Tiêu chuẩn Semantics HTTP xác định trạng thái tại biên giới trung gian thay vì chỉ tại client hoặc nguồn gốc.

Phía trên có thể có thể truy cập và vẫn tạo ra một lỗi 504 vì nó phản hồi quá chậm. Nó cũng có thể không thể truy cập theo cách tiêu tốn cửa sổ chờ của gateway. Trạng thái công khai không cho bạn biết liệu sự chậm trễ đến từ tính toán, một khóa, một phụ thuộc, DNS, mất gói, hay một bộ hẹn giờ không khớp; các dấu vết và số liệu phải cung cấp chi tiết đó.

Khi đồng hồ của Gateway hết thời gian

Mỗi bên trung gian bắt đầu một bộ hẹn giờ khi nó chuyển tiếp một yêu cầu hoặc chờ đợi sự kiện phản hồi tiếp theo. Một số bộ hẹn giờ bao gồm thiết lập kết nối, trong khi những cái khác bao gồm byte phản hồi đầu tiên, khoảng trống nhàn rỗi, hoặc toàn bộ giao dịch. Đặt tên cho bộ hẹn giờ rất quan trọng vì cùng một lỗi 504 công khai có thể đến từ các giai đoạn khác nhau.

Giả sử một cạnh cho phép ít thời gian hơn so với proxy ngược phía sau nó. Cạnh đó có thể trả lại lỗi 504 trong khi proxy và ứng dụng tiếp tục làm việc. Nhật ký ứng dụng có thể hiển thị thành công sau đó ngay cả khi client chưa bao giờ nhận được kết quả đó. Nếu không có dấu thời gian đồng bộ, điều này trông có vẻ mâu thuẫn hơn là chỉ là một sự hết hạn bộ hẹn giờ bên ngoài đơn giản.

Các hoạt động đồng bộ kéo dài cũng giữ các socket, workers, bộ nhớ và các khe kết nối. Một vài yêu cầu chậm có thể giảm khả năng cho lưu lượng không liên quan, điều này tạo ra nhiều thời gian chờ hơn. Thiết kế tốt giới hạn công việc đồng bộ, làm cho các truy vấn tốn kém hiệu quả, và di chuyển các công việc thực sự dài về một quy trình làm việc bất đồng bộ với trạng thái công việc rõ ràng.

LớpNhững gì cần kiểm traTại sao nó quan trọng
DNS và kết nốiThời gian giải quyết, lộ trình, thời gian bắt tayPhân tách độ trễ khả dụng từ công việc ứng dụng
Chờ gatewayGiới hạn kết nối, byte đầu tiên, nhàn rỗi, tổngĐặt tên cho đồng hồ chính xác đã tạo ra lỗi 504
Ứng dụngThời gian xếp hàng, thời gian xử lý, cuộc gọi raCho thấy liệu công việc đã chờ trước khi thực hiện hay không
Dữ liệu và phụ thuộcKế hoạch truy vấn, khóa, chờ nhóm, độ trễ từ xaTìm ra người tiêu tốn thời gian sâu nhất

Tại sao công việc phía trên lỡ thời hạn

Một lỗi 504 được tạo ra bởi thời gian đã trôi qua, nhưng nguyên nhân có thể là tính toán, tranh chấp, độ trễ mạng, hành vi phụ thuộc, hoặc thứ tự bộ hẹn giờ.

Công việc cơ sở dữ liệu chậm

Một quét đầy đủ, chỉ mục thiếu, khóa bị chặn, hoặc lưu trữ quá tải có thể giữ cho ứng dụng chờ đợi cho đến khi cửa sổ phản hồi của gateway đóng lại.

Nội dung pool kết nối

Trình xử lý có thể dành phần lớn thời gian của nó để chờ kết nối cơ sở dữ liệu hoặc khách hàng HTTP thay vì thực thi logic kinh doanh. Các chỉ số chờ pool cho thấy hàng đợi ẩn này.

Phụ thuộc bên ngoài chậm

Thanh toán, danh tính, tìm kiếm, hoặc dịch vụ nội dung có thể kéo dài con đường quan trọng. Một cuộc gọi hạ nguồn với giới hạn lớn hơn ngân sách yêu cầu vào tạo ra công việc lãng phí.

Hàng đợi ứng dụng

Người lao động có thể khỏe mạnh nhưng hoàn toàn bận rộn. Các yêu cầu mới chờ trong hàng đợi, để lại ít thời gian cho việc thực thi thực tế trước khi cổng bên ngoài hết hạn.

Mất mạng hoặc độ trễ định tuyến

Các gói bị rơi giữa các mạng riêng, vùng hoặc thiết bị bảo mật có thể tiêu tốn kết nối hoặc cửa sổ phản hồi ngay cả khi cả hai điểm không phải đều hoạt động.

Ngân sách thời gian bị sắp xếp sai

Một lớp ngoài có thể ngừng chờ trước khi các lớp bên trong làm. Khách hàng thấy 504 trong khi ứng dụng ghi lại một hoàn thành thành công mà không còn người nhận.

Xây dựng một dòng thời gian độ trễ cho yêu cầu

Con đường nhanh nhất đến một nguyên nhân là một khoảng thời gian được đánh dấu thời gian từ khi khách hàng đến đến phụ thuộc sâu nhất, không phải danh sách các thay đổi cấu hình không liên quan.

  1. Đo thời gian hiển thị. Ghi lại thời gian yêu cầu chạy trước khi 504 và liệu khoảng thời gian đó có tập trung xung quanh một ngưỡng ổn định, điều này thường xác định một bộ hẹn giờ đã cấu hình.
  2. Xác định cổng phát ra. Sử dụng tiêu đề phản hồi, thương hiệu, ID yêu cầu và nhật ký biên để xác định lớp nào mà đồng hồ thượng nguồn của nó đã hết hạn.
  3. Đặt tên cho giai đoạn bộ hẹn giờ. Xác định liệu sự cố là kết nối, byte đầu tiên, nhàn rỗi, hay tổng thời gian. Những giai đoạn này chỉ ra những nguyên nhân khác nhau.
  4. Theo dõi thời gian hàng đợi và thực thi riêng biệt. Một trình xử lý thực thi nhanh sau một hàng đợi dài cần công việc về năng lực, trong khi một trình xử lý có thời gian thực thi dài cần phân tích mã hoặc phụ thuộc.
  5. Phân tích thời gian phụ thuộc. Đo thời gian chờ pool cơ sở dữ liệu, thời gian truy vấn, thời gian chờ khóa, DNS, thiết lập kết nối, TLS, và thời gian dịch vụ từ xa như các khoảng thời gian riêng biệt.
  6. So sánh một yêu cầu thành công. Sự khác biệt về lộ trình, tải, trạng thái bộ đệm, người thuê, vùng, hoặc kế hoạch truy vấn thường phân lập nhánh tốn kém.
  7. Bản đồ mọi giới hạn đã cấu hình. Tài liệu thời gian ngân sách của khách hàng, biên, bộ cân bằng tải, proxy, khách hàng ứng dụng, và cơ sở dữ liệu để công việc bên trong kết thúc trước khi người gọi của nó ngừng lắng nghe.

Tiêu chuẩn trong Ngữ nghĩa HTTP, lời giải thích giữa cổng và nguồn gốc trong Tham chiếu 504 của MDN, và khắc phục sự cố của nhà cung cấp trong Hướng dẫn 502 và 504 của Cloudflare đều đặt 504 tại một thời gian chờ thượng nguồn hết hạn.

Những gì khách tham quan có thể kiểm tra một lần

Một khách tham quan có thể loại trừ một con đường cục bộ, nhưng việc gửi đi lặp lại thì rủi ro khi thao tác ban đầu có thể vẫn đang chạy phía sau cổng.

  • Kiểm tra trạng thái dịch vụ và phạm vi. So sánh một trang khác hoặc điểm cuối chỉ đọc để tìm hiểu liệu một hành động tốn kém hay toàn bộ dịch vụ bị ảnh hưởng.
  • Sử dụng một mạng thứ hai chỉ để chẩn đoán. Nếu một mạng hoạt động, VPN, proxy doanh nghiệp, hoặc lộ trình có thể đang thêm độ trễ.
  • Tránh giao dịch trùng lặp. Đối với các giao dịch, tải lên và ghi, xác minh trạng thái máy chủ trước khi gửi lại cùng một hành động.
  • Báo cáo ID yêu cầu và thời gian đã trôi qua. Thời gian có thể tiết lộ bộ hẹn giờ, trong khi khóa tương quan kết nối sự kiện của khách hàng với các dấu vết phân tán.

Rút ngắn con đường quan trọng trước khi tăng giới hạn

Các nhà điều hành nên giảm hoặc loại bỏ công việc chậm, sau đó đặt ngân sách thời gian phản ánh hợp đồng đồng bộ dự kiến.

Tối ưu hóa điểm nghẽn đã đo trước. Cải thiện kế hoạch truy vấn, giảm phạm vi khóa, giới hạn kích thước tải, loại bỏ các cuộc gọi phụ thuộc tuần tự không cần thiết, và khôi phục năng lực pool khỏe mạnh. Nếu thời gian hàng đợi chiếm ưu thế, điều chỉnh các kiểm soát đồng thời và nhu cầu với sự chú ý đến sự phụ thuộc bị ràng buộc, không chỉ số lượng quy trình phía trước.

Đối với công việc thực sự mất nhiều thời gian hơn một yêu cầu tương tác, trả lại một định danh công việc và công khai trạng thái hoàn thành thông qua một mẫu bất đồng bộ. Điều này giải phóng kết nối cổng và cung cấp cho khách hàng một kết quả rõ ràng thay vì một trang thời gian chờ không rõ ràng.

Sau khi đã hiểu đường đi quan trọng, hãy căn chỉnh các giới hạn từ trong ra ngoài. Một cuộc gọi hạ nguồn nên kết thúc trong ngân sách ứng dụng, ứng dụng trong ngân sách proxy, và proxy trong ngân sách biên.

Phân biệt 504 với các tín hiệu thời gian khác

Các thông điệp liên quan đến thời gian xác định ai là người tham gia đã chờ đợi và ranh giới nào đã hết thời gian.

Tín hiệuÝ nghĩa khả thiChủ sở hữu tiếp theo
504 Gateway TimeoutGateway đã chờ quá lâu cho một phản hồi hạ nguồnChủ sở hữu độ trễ hạ nguồn
408 Request TimeoutMáy chủ đã chờ quá lâu cho yêu cầu của clientChủ sở hữu tải lên hoặc kết nối client
502 Bad GatewayGateway đã nhận được một phản hồi hạ nguồn không hợp lệChủ sở hữu giao thức, lộ trình hoặc hạ nguồn
Thời gian chờ phía clientTrình duyệt hoặc SDK đã ngừng chờ đợi theo giới hạn của riêng nóChủ sở hữu cấu hình client hoặc độ trễ end-to-end

Ngăn chặn các trang Timeout nhập dữ liệu

Một hệ thống thu thập nên ghi lại thời gian đã trôi qua và lớp sản xuất phản hồi mỗi khi một lần lấy dữ liệu thất bại. Scrapeless Universal Scraping API cung cấp một lớp thu thập quản lý cho các trang công khai, trong khi chất lượng tập dữ liệu vẫn phụ thuộc vào việc từ chối các trang gateway và nội dung không mục tiêu khác.

Ghi lại URL yêu cầu và cuối cùng, trạng thái, thời gian, loại nội dung, tiêu đề và một chữ ký body. Nếu phản hồi là 504, hãy giữ lại sự kiện cho phân tích hoạt động và loại trừ body khỏi việc trích xuất. Một trang gateway có thể chứa tiêu đề, liên kết và CSS bóng bẩy mà thông thường sẽ được một trình phân tích đơn giản chấp nhận.

Giữ cho tần suất giám sát có giới hạn và tránh các hành động ghi trùng lặp sau khi hết thời gian. Quyền truy cập dữ liệu công khai nên tuân theo các điều khoản của trang và luật áp dụng, và lỗi khả dụng không bao giờ nên được xem như là sự cho phép để tăng lưu lượng truy cập.

Một 504 chỉ rõ Ranh giới Chờ Đợi

HTTP 504 Gateway Timeout cho bạn biết rằng thời gian chờ hạ nguồn của một trung gian đã hết. Nó không xác định truy vấn chậm hoặc phụ thuộc, nhưng nó chỉ ra ranh giới nơi mà hợp đồng thời gian đã thất bại.

Đo lường ngưỡng đã trôi qua, xác định gateway phát tín hiệu, tách thời gian hàng đợi khỏi thời gian thực hiện, và lập bản đồ mọi phụ thuộc bên trong. Sửa chữa điểm nghẽn trước khi thay đổi giới hạn, sau đó căn chỉnh các giới hạn đó để những người gọi dừng công việc theo một thứ tự kiểm soát.

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 hồi web công khai ghi lại các bằng chứng liên quan đến HTTP 504 thay vì coi mỗi lần lấy dữ liệu thất bại là một sự kiện giống nhau.

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

Yêu cầu Tín dụng $5 của bạn →

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

Có phải một 504 do kết nối internet chậm không?

Một mạng lưới địa phương có thể góp phần khi chỉ một người dùng hoặc lối đi bị ảnh hưởng, nhưng một 504 được tạo ra bởi một gateway đã chờ quá lâu cho một máy chủ hạ nguồn. Nếu nhiều người dùng gặp phải nó, độ trễ hạ nguồn và cấu hình bộ hẹn giờ của dịch vụ cần được ưu tiên.

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

Một 504 có nghĩa là một gateway đã chờ quá lâu cho một máy chủ hạ nguồn, trong khi 408 có nghĩa là một máy chủ đã chờ quá lâu cho client hoàn thành yêu cầu của nó. Người tham gia chờ đợi và hướng của sự chậm trễ là khác nhau.

Liệu việc tăng thời gian chờ proxy có khắc phục được lỗi 504 không?

Việc tăng thời gian chờ proxy có thể đáp ứng được công việc hợp pháp đã biết, nhưng nó không sửa chữa truy vấn chậm, khóa bị chặn, hồ bơi bão hòa hoặc phụ thuộc không khả dụng. Nó cũng có thể giữ tài nguyên chiếm dụng lâu hơn, vì vậy hãy đo lường đường đi quan trọng trước.

Tại sao backend ghi nhận thành công sau khi người dùng thấy 504?

Một gateway bên ngoài có thể ngừng chờ trước khi ứng dụng hoàn tất. Backend sau đó hoàn thành và ghi nhận thành công, nhưng kết nối client đã bị mất, điều này cho thấy ngân sách thời gian bị sắp xếp không đúng hoặc công việc quá dài cho đường đi đồng bộ.

Một scraper nên xử lý một trang 504 như thế nào?

Một scraper nên lưu trữ 504 như một lần lấy dữ liệu thất bại và loại trừ body của nó khỏi việc trích xuất mục tiêu. Ghi nhận URL cuối, độ dài, tiêu đề, ID yêu cầu, và một dấu vân tay nội dung nhỏ để sự kiện có thể được chẩn đoán mà không làm ô nhiễm tập dữ liệu.

Tài liệu tham khảo