504 Cổng hết thời gian chờ từ máy chủ phụ trợ

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Triệu chứng

Ứng dụng nhận được mã trạng thái HTTP 504 kèm theo thông báo "Thời gian chờ trên cổng vào" để phản hồi lệnh gọi API.

Phản hồi lỗi này cho biết ứng dụng không nhận được phản hồi kịp thời từ Apigee Edge hoặc máy chủ phụ trợ trong quá trình thực thi lệnh gọi API.

Thông báo Lỗi

Ứng dụng nhận được mã phản hồi sau đây:

HTTP/1.1 504 Gateway Timeout

Có thể theo sau mã này là một thông báo lỗi tương tự như thông báo dưới đây:

<html>
<head><title>504 Gateway Timeout</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Timeout</h1></center>
</body>
</html>

Nguyên nhân gây ra thời gian chờ cổng vào là gì?

Đường dẫn thông thường cho một yêu cầu API được đưa ra qua Apigee Edge là Ứng dụng -> Bộ định tuyến -> Trình xử lý thư -> Máy chủ phụ trợ như minh hoạ trong hình bên dưới:

Đường dẫn yêu cầu API

Ứng dụng khách, bộ định tuyến và Bộ xử lý thông báo được định cấu hình với các giá trị thời gian chờ phù hợp. Apigee Edge dự kiến sẽ nhận được phản hồi cho mọi yêu cầu API trong một khoảng thời gian dựa trên giá trị thời gian chờ. Nếu không nhận được phản hồi trong khoảng thời gian đã chỉ định, thì phản hồi 504 Gateway Hết thời gian chờ sẽ được trả về.

Nguyên nhân có thể xảy ra

Trong Apigee Edge, nguyên nhân điển hình gây ra phản hồi 504 Gateway Hết thời gian chờ từ máy chủ phụ trợ là:

Nguyên nhân Nội dung mô tả Hướng dẫn khắc phục sự cố cho
Máy chủ phụ trợ phản hồi với thời gian chờ 504 Gateway Máy chủ phụ trợ hết thời gian chờ và trả về phản hồi 504 Gateway Hết thời gian chờ cho Trình xử lý thư. Người dùng Edge riêng tư và công khai trên đám mây công cộng

Máy chủ phụ trợ phản hồi với thời gian chờ 504 Gateway

Máy chủ phụ trợ có thể phản hồi bằng mã phản hồi HTTP 504 Hết thời gian chờ.

Chẩn đoán

Phần này giải thích cách chẩn đoán chính xác Thời gian chờ của cổng vào 504. Quy trình cả ở chế độ Riêng tư và Người dùng Cloud Public có trong danh sách.

Quy trình 1: Sử dụng tính năng Theo dõi (người dùng Đám mây riêng tư và Đám mây công cộng)

  1. Bật tính năng Trace trong giao diện người dùng Apigee cho API bị ảnh hưởng.
  2. Gửi yêu cầu đến máy chủ phụ trợ.
  3. Nếu yêu cầu API không thành công hiển thị phản hồi 504 từ máy chủ phụ trợ trong Theo dõi, thì nguyên nhân gây ra Thời gian chờ của cổng vào 504 là do máy chủ phụ trợ.
  4. Để xác định thời gian phản hồi, hãy nhấp vào Phản hồi nhận được từ máy chủ đích trong tính năng Theo dõi. Trong ví dụ dưới đây, thời gian đã trôi qua là 60004 mili giây:

    thông tin chi tiết về giai đoạn từ giao diện người dùng

    Phần Thông tin chi tiết về giai đoạn cung cấp thông tin bổ sung:

    • Cửa sổ này làm nổi bật phản hồi 504 Gateway Hết thời gian chờ nhận được từ máy chủ phụ trợ.
    • Phần Nội dung phản hồi hiển thị toàn bộ nội dung của phản hồi từ máy chủ phụ trợ. Như đã lưu ý trước đó, định dạng và nội dung của tải trọng phản hồi có thể khác nhau dựa trên việc triển khai máy chủ phụ trợ.
    • Tiêu đề phản hồi > Máy chủ có thể cho biết nơi bắt nguồn phản hồi.
  5. Để xem dữ liệu Analytics và xác nhận chẩn đoán, hãy nhấp vào Dữ liệu Analytics đã ghi giai đoạn theo dõi, như minh hoạ trong hình dưới đây:

    số liệu phân tích từ dấu vết

    Phần Tiêu đề phản hồi của Chi tiết giai đoạn hiển thị giá trị của X-Apigee-fault-codeX-Apigee-fault-source, như minh hoạ trong hình bên dưới:

    thông tin chi tiết về các giai đoạn phân tích từ giao diện người dùng

    Nếu các trường này chứa các giá trị được hiển thị trong bảng bên dưới, thì phản hồi lỗi 504 bắt nguồn từ máy chủ phụ trợ:

    Tiêu đề phản hồi Giá trị
    X-Apigee-fault-source mục tiêu
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  6. Kiểm tra tạo chuỗi proxy. Hãy làm theo các bước sau để xác định xem máy chủ phụ trợ có đang gọi một proxy khác hay không trong Apigee:
    1. Quay lại giai đoạn Yêu cầu đã gửi đến máy chủ đích rồi nhấp vào Nút Show Curl để xem bí danh máy chủ lưu trữ của máy chủ phụ trợ.
    2. Nếu bí danh máy chủ lưu trữ của máy chủ phụ trợ trỏ đến một bí danh máy chủ ảo, thì chuỗi proxy đang được tạo địa điểm. Lặp lại các bước trên cho từng proxy theo chuỗi để chẩn đoán nguyên nhân gây ra Cổng 504 Phản hồi lỗi hết thời gian chờ. 504 Thời gian chờ của cổng vào xảy ra trong các proxy chuỗi ở các giai đoạn khác của chu kỳ yêu cầu/phản hồi có thể được chẩn đoán bằng cách sử dụng cẩm nang này.
    3. Nếu bí danh máy chủ lưu trữ của máy chủ phụ trợ trỏ đến máy chủ phụ trợ, hãy tiếp tục Độ phân giải.

Quy trình 2: Gọi trực tiếp API máy chủ phụ trợ (người dùng Đám mây công khai và riêng tư)

Gọi trực tiếp máy chủ phụ trợ để xác nhận cùng một hành vi phản hồi Hết thời gian chờ cổng vào 504 gặp phải khi người dùng gửi yêu cầu qua Apigee Edge.

  1. Đảm bảo rằng bạn có tất cả các tiêu đề, tham số truy vấn và thông tin đăng nhập cần thiết để truyền đến máy chủ phụ trợ như một phần của yêu cầu.
  2. Nếu dịch vụ phụ trợ có thể truy cập công khai, thì bạn có thể sử dụng lệnh curl, Postman hoặc bất kỳ Ứng dụng REST nào khác và trực tiếp gọi API máy chủ phụ trợ.
  3. Nếu chỉ có Trình xử lý thư mới truy cập được vào máy chủ phụ trợ, hãy sử dụng curl , Postman hoặc bất kỳ Ứng dụng REST nào khác để gọi API máy chủ phụ trợ trực tiếp từ Trình xử lý tin nhắn.
  4. Nếu dịch vụ phụ trợ trả về phản hồi 504 Gateway Hết thời gian chờ, hãy tiếp tục Giải pháp.

Quy trình số 3: Kiểm tra Nhật ký truy cập NGINX (chỉ dành cho người dùng Đám mây riêng tư)

Nhật ký truy cập NGINX có thể giúp xác định xem máy chủ phụ trợ có gửi phản hồi lỗi 504 hay không. Điều này đặc biệt hữu ích nếu vấn đề xảy ra trong quá khứ, không liên tục hoặc không thể ghi nhận được trong Theo dõi. Hãy làm theo các bước sau để kiểm tra nhật ký truy cập NGINX:

  1. Xem nhật ký truy cập NGINX bằng lệnh sau:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. Kiểm tra phản hồi lỗi 504 đối với proxy API bị ảnh hưởng. Bạn có thể xem một khoảng thời gian cụ thể, liệu vấn đề đã xảy ra trong quá khứ hay xác định xem yêu cầu có vẫn không thành công hay không bằng phản hồi lỗi 504.
  3. Nếu có bất kỳ phản hồi lỗi 504 nào, hãy xác định xem phản hồi lỗi đó bắt nguồn từ máy chủ phụ trợ.
  4. Hình dưới đây là ví dụ về một mục nhập nhật ký NGINX hiển thị phản hồi lỗi 504 do máy chủ đích:

    nhật ký nginx mẫu

    Nếu các trường X-Apigee-fault-sourceX-Apigee-fault-code chứa các giá trị hiển thị trong bảng bên dưới, phản hồi 504 bắt nguồn từ máy chủ phụ trợ:

    Tiêu đề phản hồi Giá trị
    X-Apigee-fault-source mục tiêu
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. Xem lại proxy API bị ảnh hưởng để kiểm tra xem có xâu chuỗi proxy không tức là máy chủ phụ trợ/điểm cuối đích đang gọi một proxy khác trong Apigee. Nếu proxy API là bằng cách tạo chuỗi proxy , hãy lặp lại các bước trên cho từng proxy theo chuỗi để chẩn đoán nguyên nhân gây ra Thời gian chờ cổng vào 504 của bạn. 504 Thời gian chờ của cổng vào xảy ra trong proxy chuỗi ở các giai đoạn khác có thể được chẩn đoán hãy xem cẩm nang này.
  6. Nếu không có tạo chuỗi proxy và phản hồi lỗi 504 bắt nguồn từ máy chủ phụ trợ, chuyển sang phần Giải pháp.

Quy trình 4: Sử dụng API giám sát (chỉ dành cho người dùng Cloud Public)

Tính năng Giám sát API giúp bạn xác định vấn đề để nhanh chóng chẩn đoán các vấn đề về lỗi, hiệu suất và độ trễ cũng như nguồn lỗi, chẳng hạn như ứng dụng của nhà phát triển, Proxy API, mục tiêu phụ trợ hoặc nền tảng API.

Tìm hiểu một tình huống mẫu minh hoạ cách khắc phục sự cố 5xx với API của bạn bằng cách sử dụng Giám sát API. Ví dụ: thiết lập cảnh báo để thông báo cho quản trị viên khi số lượng mã trạng thái 504 vượt quá một ngưỡng cụ thể.

Độ phân giải

Bằng cách áp dụng quy trình chẩn đoán nêu trên, bạn có thể làm việc với nhóm máy chủ phụ trợ để khắc phục sự cố trong máy chủ phụ trợ. Việc này có thể bao gồm việc điều chỉnh thời gian chờ trong các máy chủ phụ trợ hoặc trong bất kỳ trình cân bằng tải nào trước máy chủ mục tiêu.

Thu thập thông tin chẩn đoán

Nếu sự cố vẫn tiếp diễn, hãy chia sẻ thông tin chẩn đoán sau đây với Bộ phận hỗ trợ Apigee.

Nếu bạn là người dùng Đám mây công cộng, hãy cung cấp các thông tin sau:

  • Tên tổ chức
  • Tên môi trường
  • Tên proxy API
  • Hoàn tất lệnh curl dùng để tái hiện phản hồi lỗi 504
  • Tệp theo dõi với các yêu cầu API nhận được phản hồi lỗi Thời gian chờ cổng vào 504

Nếu bạn là người dùng Đám mây riêng tư, hãy cung cấp những thông tin sau:

  • Đã nhận thấy thông báo lỗi hoàn chỉnh đối với các yêu cầu không thực hiện được
  • Tên môi trường
  • Gói proxy API
  • Tệp theo dõi với các yêu cầu API nhận được phản hồi lỗi 504 Gateway timeout
  • Nhật ký truy cập NGINX
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  • Nhật ký Trình xử lý thư
    /opt/apigee/var/log/edge-message-processor/logs/system.log