Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Dấu hiệu
Ứng dụng khách nhận được mã trạng thái HTTP 504 kèm theo thông báo "Hết thời gian chờ của cổng" để phản hồi các lệnh gọi API.
Phản hồi lỗi này cho biết rằng ứ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 một lệnh gọi API.
Thông báo Lỗi
Ứng dụng khách nhận được mã phản hồi sau:
HTTP/1.1 504 Gateway Timeout
Mã này có thể đi kèm với 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 lỗi hết thời gian chờ của cổng là gì?
Đường dẫn thông thường cho một yêu cầu API được thực hiện thông qua Apigee Edge là Client -> Router -> Message Processor -> Backend Server như minh hoạ trong hình bên dưới:

Ứng dụng máy 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 các giá trị thời gian chờ. Nếu không nhận được phản hồi trong khoảng thời gian quy định, thì phản hồi 504 Gateway Timeout sẽ được trả về.
Nguyên nhân có thể dẫn đến vấn đề này
Trong Apigee Edge, nguyên nhân thường gặp của phản hồi 504 Gateway Timeout (Hết thời gian chờ của cổng) 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 bằng lỗi 504 Hết thời gian chờ của cổng nối | Máy chủ phụ trợ hết thời gian chờ và trả về phản hồi 504 Gateway Timeout (Hết thời gian chờ cổng) cho Trình xử lý thông báo. | Người dùng Edge Private Cloud và Public Cloud |
Máy chủ phụ trợ phản hồi bằng lỗi 504 Hết thời gian chờ của cổng nối
Máy chủ phụ trợ có thể phản hồi bằng mã phản hồi HTTP 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 lỗi 504 Gateway Timeout. Quy trình cho cả người dùng Đám mây riêng tư và Đám mây công khai đều được liệt kê.
Quy trình 1: Sử dụng Trace (Người dùng Cloud riêng tư và công khai)
- Bật tính năng Trace (Theo dõi) trong giao diện người dùng Apigee cho API bị ảnh hưởng.
- Gửi yêu cầu đến máy chủ phụ trợ.
- Nếu yêu cầu API không thành công cho thấy phản hồi 504 từ máy chủ phụ trợ trong Trace, thì nguyên nhân gây ra lỗi 504 Hết thời gian chờ của cổng nối là do máy chủ phụ trợ.
- Để 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ủ đích trong Trace. Trong ví dụ minh hoạ, thời gian đã trôi qua là 60004 mili giây:

Phần Chi tiết về giai đoạn cung cấp thêm thông tin:
- Thẻ này làm nổi bật phản hồi 504 Hết thời gian chờ của cổng nối 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 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 tuỳ theo cách triển khai máy chủ phụ trợ.
- Phần Tiêu đề phản hồi > Máy chủ có thể cho biết nơi phản hồi bắt nguồn.
- Để xem dữ liệu Analytics và xác nhận chẩn đoán, hãy nhấp vào giai đoạn Dữ liệu Analytics được ghi lại trong Trace, như minh hoạ trong hình bên dưới:

Phần Tiêu đề phản hồi của Chi tiết giai đoạn cho thấy các giá trị của
X-Apigee-fault-codevàX-Apigee-fault-source, như minh hoạ trong hình dưới đây:
Nếu các trường này chứa các giá trị xuất hiện 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 -
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:
- Chuyển về 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 máy chủ phụ trợ.
- Nếu bí danh máy chủ phụ trợ trỏ đến một bí danh máy chủ ảo, thì hoạt động liên kết proxy sẽ diễn ra. Lặp lại các bước ở trên cho từng proxy được liên kết để chẩn đoán nguyên nhân gây ra phản hồi lỗi 504 Gateway Timeout. Bạn có thể chẩn đoán lỗi 504 Hết thời gian chờ của cổng xảy ra trong các proxy được liên kết ở các giai đoạn khác của chu kỳ yêu cầu/phản hồi bằng cách sử dụng sổ tay này.
- Nếu bí danh máy chủ phụ trợ trỏ đến máy chủ phụ trợ, hãy chuyển sang phần Giải pháp.
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à Đám mây 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 504 Gateway Timeout (Hết thời gian chờ cổng) tương tự khi yêu cầu được thực hiện thông qua Apigee Edge.
- Đảm bảo rằng bạn có tất cả tiêu đề, thông số truy vấn và thông tin đăng nhập bắt buộc cần thiết để truyền đến máy chủ phụ trợ trong yêu cầu.
- 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ỳ REST Client nào khác và gọi trực tiếp API máy chủ phụ trợ. - Nếu chỉ có thể truy cập vào máy chủ phụ trợ từ Trình xử lý tin nhắn, hãy dùng lệnh
curl, Postman hoặc bất kỳ REST Client nào khác để gọi API máy chủ phụ trợ trực tiếp từ Trình xử lý tin nhắn. - Nếu dịch vụ phụ trợ trả về phản hồi 504 Hết thời gian chờ của cổng nối, hãy chuyển sang phần 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 Đá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ứ, xảy ra không liên tục hoặc không thể ghi lại trong Dấu vết. Hãy làm theo các bước sau để kiểm tra nhật ký truy cập NGINX:
- 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
- Kiểm tra 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 trong quá khứ hoặc xác định xem các yêu cầu vẫn không thành công với phản hồi lỗi 504 hay không.
- 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.
- Xem xét proxy API bị ảnh hưởng để kiểm tra chuỗi proxy, 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 proxy chaining (chuỗi proxy), hãy lặp lại các bước trên cho từng proxy được liên kết để chẩn đoán nguyên nhân gây ra phản hồi lỗi 504 Gateway Timeout (Hết thời gian chờ của cổng). Bạn có thể chẩn đoán lỗi 504 Gateway timeout (Cổng vào hết thời gian chờ) xảy ra trong các proxy được liên kết ở các giai đoạn khác bằng sổ tay này.
- 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 sang phần Giải pháp.
Hình bên dưới là ví dụ về một mục nhập nhật ký NGINX cho thấy phản hồi lỗi 504 do máy chủ đích gây ra:

Nếu các trường X-Apigee-fault-source và X-Apigee-fault-code chứa các giá trị xuất hiện 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 |
Quy trình 4: Sử dụng tính năng Giám sát API (chỉ dành cho người dùng Đám mây công khai)
Tính năng Giám sát API cho phép bạn nhanh chóng cô lập 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ư nguồn của các vấn đề đó, 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.
Xem xét một tình huống mẫu minh hoạ cách khắc phục các vấn đề 5xx với API bằng tính năng Giám sát API. Ví dụ: thiết lập một 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 được 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ợ. Điều 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 thời gian chờ trong mọi bộ cân bằng tải ở phía trước các máy chủ đích.
Thu thập thông tin chẩn đoán
Nếu vấn đề 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ợ Apigee.
Nếu bạn là người dùng Đám mây công cộng, 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được dùng để tái tạo phản hồi lỗi 504 - Theo dõi tệp có các yêu cầu API nhận được phản hồi lỗi 504 Gateway Timeout
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:
- Thông báo lỗi hoàn chỉnh được ghi nhận cho các yêu cầu không thành công
- Tên môi trường
- Gói API Proxy
- Theo dõi tệp có 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ý tin nhắn
/opt/apigee/var/log/edge-message-processor/logs/system.log