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 khách nhận được mã trạng thái HTTP 504 với thông báo "Gateway Timeout" (Hết thời gian chờ cổng) 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 của 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 sẽ nhận được mã phản hồi sau đây:

HTTP/1.1 504 Gateway Timeout

Theo sau mã này có thể là một thông báo lỗi tương tự như mã bên dưới:

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

Nguyên nhân nào khiến cổng hết thời gian chờ?

Đường dẫn điển hình cho một yêu cầu API được thực hiện qua Apigee Edge là Ứng dụng khách -> Bộ định tuyến -> Bộ xử lý tin nhắn -> Máy chủ phụ trợ như trong hình dưới đây:

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

Ứng dụng, 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 Timeout sẽ được trả về.

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

Trong Apigee Edge, nguyên nhân điển hình dẫn đến phản hồi 504 Gateway Timeout từ máy chủ phụ trợ là:

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

Máy chủ phụ trợ phản hồi với lỗi cổng vào 504

Máy chủ phụ trợ có thể phản hồi bằng mã phản hồi HTTP là 504 Gateway Timeout.

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ổng vào 504. Quy trình cho cả người dùng đám mây riêng và công khai đều được liệt kê.

Quy trình 1: Sử dụng dấu vết (người dùng riêng tư và công khai trên Cloud)

  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 công cụ Theo dõi, thì nguyên nhân gây ra lỗi Thời gian chờ cổng 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 giai đoạn Phản hồi nhận được từ máy chủ mục tiêu trong công cụ 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 Chi tiết giai đoạn cung cấp thêm thông tin:

    • Thao tác này sẽ làm nổi bật phản hồi 504 Gateway Timeout nhận được từ máy chủ phụ trợ.
    • Phần Response Content (Nội dung phản hồi) hiển thị toàn bộ nội dung phản hồi qua 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 tuỳ theo cách triển khai máy chủ phụ trợ.
    • Mục Tiêu đề phản hồi > Máy chủ có thể cho biết nguồn gốc của phản hồi.
  5. Để xem dữ liệu Analytics và xác nhận thông tin chẩn đoán, hãy nhấp vào giai đoạn Dữ liệu phân tích được ghi lại trong công cụ Theo dõi, như minh hoạ trong hình dưới đây:

    thông tin phân tích từ dấu vết

    Phần Tiêu đề phản hồi (Response Headers) của Thông tin chi tiết về giai đoạn cho thấy các giá trị của X-Apigee-fault-codeX-Apigee-fault-source, như minh hoạ trong hình dưới đây:

    thông tin chi tiết về 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 giá trị 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 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 trong Apigee hay không:
    1. Quay lại giai đoạn Request sent to target server (Yêu cầu gửi đến máy chủ đích) rồi nhấp vào nút Show Curl (Hiện Curl) để xem bí danh của máy chủ lưu trữ phụ trợ.
    2. Nếu bí danh của máy chủ phụ trợ trỏ đến một bí danh của máy chủ ảo, thì chuỗi proxy sẽ được thiết lập. Lặp lại các bước ở trên cho mỗi proxy theo chuỗi để chẩn đoán nguyên nhân gây ra lỗi Thời gian chờ cổng vào 504. 504 Thời gian chờ của cổng vào xảy ra trong proxy theo chuỗi ở các giai đoạn khác của chu trình yêu cầu/phản hồi có thể được chẩn đoán bằng cẩm nang này.
    3. Nếu bí danh của máy chủ phụ trợ trỏ đến máy chủ phụ trợ, hãy chuyển đến phần Độ 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 hành vi phản hồi Hết thời gian chờ cổng 504 gặp phải khi yêu cầu được thực hiện thông qua Apigee Edge.

  1. Đảm bảo rằng bạn có tất 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ợ trong 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ể dùng lệnh curl, Postman hoặc bất kỳ Ứng dụng REST nào khác và gọi trực tiếp API máy chủ phụ trợ.
  3. Nếu chỉ có thể truy cập máy chủ phụ trợ qua Bộ xử lý thông báo, hãy sử dụng lệnh curl, Postman hoặc bất kỳ Ứng dụng REST nào khác để trực tiếp gọi API máy chủ phụ trợ qua Bộ xử lý thông báo.
  4. Nếu dịch vụ phụ trợ trả về phản hồi 504 Gateway Timeout, hãy chuyển đến phần Resolution (Giải pháp).

Quy trình 3: Kiểm tra nhật ký truy cập NGINX (chỉ dành cho người dùng Private Cloud)

Nhật ký truy cập NGINX có thể giúp xác định xem phản hồi lỗi 504 có phải do máy chủ phụ trợ gửi hay không. Điều này đặc biệt hữu ích nếu sự cố đã xảy ra trước đây, xảy ra không liên tục hoặc không thể ghi lại được trong Trace. 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 các phản hồi lỗi 504 cho proxy API bị ảnh hưởng. Bạn có thể kiểm tra một khoảng thời gian cụ thể, nếu vấn đề đã xảy ra trước đây hoặc xác định xem có phải các yêu cầu 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 có bắt nguồn từ máy chủ phụ trợ hay không.
  4. Hình dưới đây là ví dụ về mục nhập nhật ký NGINX cho thấy phản hồi lỗi 504 do máy chủ mục tiêu gây ra:

    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, thì 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. Kiểm tra proxy API bị ảnh hưởng để kiểm tra xem có chuỗi proxy hay 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 đang sử dụng chuỗi proxy , hãy lặp lại các bước ở trên cho mỗi proxy theo chuỗi để chẩn đoán nguyên nhân gây ra lỗi Thời gian chờ cổng vào 504. 504 Bạn có thể chẩn đoán thời gian chờ của cổng vào trong các proxy theo chuỗi ở các giai đoạn khác bằng cẩm nang này.
  6. Nếu không có chuỗi proxy và phản hồi lỗi 504 bắt nguồn từ máy chủ phụ trợ, hãy chuyển đến phần Giải pháp.

Quy trình số 4: Sử dụng tính năng Giám sát API (chỉ dành cho người dùng Cloud công cộng)

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

Xem tình huống mẫu minh hoạ cách khắc phục sự cố 5xx xảy ra với API bằng tính nă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 sử dụng các 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 vấn đề trong máy chủ phụ trợ. Trong đó có thể bao gồm cả việc điều chỉnh thời gian chờ trong máy chủ phụ trợ hoặc hết thời gian chờ trong bất kỳ trình cân bằng tải nào trước máy chủ đích.

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 Nhóm hỗ trợ API.

Nếu bạn là người dùng Public Cloud, hãy cung cấp những 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 tạo 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 Gateway Timeout 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:

  • Đã phát hiệ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ành công
  • 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 (Hết thời gian chờ cổng nối mạng 504)
  • Nhật ký truy cập NGINX
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  • Nhật ký bộ xử lý thư
    /opt/apigee/var/log/edge-message-processor/logs/system.log