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 lỗi hết thời gian chờ cho các yêu cầu API hoặc yêu cầu bị chấm dứt đột ngột trong khi yêu cầu API vẫn đang được thực thi trên Apigee.
Bạn sẽ thấy mã trạng thái 499 cho các yêu cầu API như vậy trong tính năng Giám sát API và nhật ký truy cập NGINX. Đôi khi, bạn sẽ thấy các mã trạng thái khác nhau trong API Analytics vì API này cho biết mã trạng thái do Trình xử lý thông báo trả về.
Thông báo lỗi
Các ứng dụng có thể gặp phải những lỗi như:
curl: (28) Operation timed out after 6001 milliseconds with 0 out of -1 bytes received
Điều gì gây ra thời gian chờ của ứng dụng?
Đường dẫn thông thường cho một yêu cầu API trên nền tảng Edge là Client > Router > Message Processor > Backend Server như minh hoạ trong hình sau:

Các Bộ định tuyến và Bộ xử lý thông báo trong nền tảng Apigee Edge được thiết lập với các giá trị thời gian chờ mặc định phù hợp để đảm bảo rằng các yêu cầu API không mất quá nhiều thời gian để hoàn tất.
Hết thời gian chờ trên ứng dụng
Bạn có thể thiết lập các ứng dụng khách bằng một giá trị thời gian chờ phù hợp dựa trên nhu cầu của mình.
Các ứng dụng như trình duyệt web và ứng dụng di động có thời gian chờ do hệ điều hành xác định.
Hết thời gian chờ trên bộ định tuyến
Thời gian chờ mặc định được định cấu hình trên Bộ định tuyến là 57 giây. Đây là khoảng thời gian tối đa mà một proxy API có thể thực thi kể từ thời điểm yêu cầu API được nhận trên Edge cho đến khi phản hồi được gửi lại, bao gồm cả phản hồi phụ trợ và tất cả các chính sách được thực thi. Bạn có thể ghi đè thời gian chờ mặc định trên Bộ định tuyến và máy chủ ảo như giải thích trong phần Định cấu hình thời gian chờ I/O trên Bộ định tuyến.
Hết thời gian chờ trên Bộ xử lý thông báo
Thời gian chờ mặc định được định cấu hình trên Trình xử lý thông báo là 55 giây. Đây là khoảng thời gian tối đa mà máy chủ phụ trợ có thể mất để xử lý yêu cầu và phản hồi lại Bộ xử lý thông báo. Bạn có thể ghi đè thời gian chờ mặc định trên Trình xử lý thông báo hoặc trong API Proxy như giải thích trong phần Định cấu hình thời gian chờ I/O trên Trình xử lý thông báo.
Nếu ứng dụng đóng kết nối với Bộ định tuyến trước khi proxy API hết thời gian chờ, thì bạn sẽ thấy lỗi hết thời gian chờ cho yêu cầu API cụ thể. Mã trạng thái 499 Client
Closed Connection được ghi vào Nhật ký của Bộ định tuyến cho những yêu cầu như vậy. Bạn có thể quan sát mã này trong Nhật ký truy cập API Monitoring và NGINX.
Nguyên nhân có thể dẫn đến vấn đề này
Trong Edge, các nguyên nhân thường gặp gây ra lỗi 499 Client Closed Connection là:
| Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
|---|---|---|
| Ứng dụng đột ngột đóng kết nối | Điều này xảy ra khi ứng dụng đóng kết nối do người dùng cuối huỷ yêu cầu trước khi yêu cầu hoàn tất. | Người dùng đám mây công khai và đám mây riêng tư |
| Hết thời gian chờ của ứng dụng khách | Điều này xảy ra khi ứng dụng khách hết thời gian chờ trước khi API Proxy có thời gian xử lý và gửi phản hồi. Điều này thường xảy ra khi thời gian chờ của máy khách nhỏ hơn thời gian chờ của bộ định tuyến. | Người dùng đám mây công khai và đám mây riêng tư |
Các bước chẩn đoán thường gặp
Hãy sử dụng một trong các công cụ/kỹ thuật sau để chẩn đoán lỗi này:
- Giám sát API
- Nhật ký truy cập NGINX
Giám sát API
Cách chẩn đoán lỗi bằng tính năng Giám sát API:
- Chuyển đến trang Phân tích > Giám sát API > Điều tra.
- Lọc các lỗi
4xxvà chọn khung thời gian. - Vẽ Mã trạng thái theo Thời gian.
- Chọn một ô có lỗi
499như minh hoạ bên dưới:
- Bạn sẽ thấy thông tin về lỗi
499trên ngăn bên phải như minh hoạ bên dưới:
- Trong ngăn bên phải, hãy nhấp vào Xem nhật ký.

Trong cửa sổ Nhật ký lưu lượng truy cập, hãy lưu ý những thông tin sau đây về một số lỗi
499:- Yêu cầu:Phần này cung cấp phương thức yêu cầu và URI được dùng để thực hiện các lệnh gọi
- Thời gian phản hồi:Thông tin này cho biết tổng thời gian đã trôi qua cho yêu cầu.
Bạn cũng có thể nhận tất cả nhật ký bằng cách sử dụng API GET logs (Nhận nhật ký) của API Giám sát. Ví dụ: bằng cách truy vấn nhật ký cho
org,env,timeRangevàstatus, bạn có thể tải xuống tất cả nhật ký cho các giao dịch mà khách hàng đã hết thời gian chờ.Vì API Monitoring đặt proxy thành
-cho các lỗi499HTTP, nên bạn có thể sử dụng API (Logs API) để lấy proxy được liên kết cho máy chủ ảo và đường dẫn.For example :
curl "https://apimonitoring.enterprise.apigee.com/logs/apiproxies?org=ORG&env=ENV&select=https://VIRTUAL_HOST/BASEBATH" -H "Authorization: Bearer $TOKEN"
- Xem Thời gian phản hồi để biết thêm các lỗi
499và kiểm tra xem Thời gian phản hồi có nhất quán (giả sử là 30 giây) trên tất cả các lỗi499hay không.
Nhật ký truy cập NGINX
Cách chẩn đoán lỗi bằng nhật ký truy cập NGINX:
- Nếu là người dùng Đám mây riêng, bạn có thể sử dụng nhật ký truy cập NGINX để xác định thông tin chính về lỗi HTTP
499. - Kiểm tra nhật ký truy cập NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log - Tìm kiếm để xem có
499Lỗi nào trong một khoảng thời gian cụ thể hay không (nếu vấn đề xảy ra trong quá khứ) hoặc xem có yêu cầu nào vẫn không thành công với499hay không. - Xin lưu ý những thông tin sau đối với một số lỗi
499:- Tổng thời gian phản hồi
- URI yêu cầu
- Tác nhân người dùng
Ví dụ về lỗi 499 trong nhật ký truy cập của NGINX:
2019-08-23T06:50:07+00:00 rrt-03f69eb1091c4a886-c-sy 50.112.119.65:47756 10.10.53.154:8443 10.001 - - 499 - 422 0 GET /v1/products HTTP/1.1 - okhttp/3.9.1 api.acme.org rrt-03f69eb1091c4a886-c-sy-13001-6496714-1 50.112.119.65 - - - - - - - -1 - - dc-1 router-pod-1 rt-214-190301-0020137-latest-7d 36 TLSv1.2 gateway-1 dc-1 acme prod https -
Trong ví dụ này, chúng ta thấy thông tin sau:
- Tổng thời gian phản hồi:
10.001giây. Điều này cho biết ứng dụng khách đã hết thời gian chờ sau 10,001 giây - Yêu cầu:
GET /v1/products - Máy chủ lưu trữ:
api.acme.org - Tác nhân người dùng:
okhttp/3.9.1
- Kiểm tra xem Tổng thời gian phản hồi và Tác nhân người dùng có nhất quán trên tất cả các lỗi
499hay không.
Nguyên nhân: Ứng dụng đã đóng kết nối đột ngột
Chẩn đoán
- Khi một API được gọi từ một ứng dụng một trang đang chạy trong trình duyệt hoặc ứng dụng di động, trình duyệt sẽ huỷ yêu cầu nếu người dùng cuối đột ngột đóng trình duyệt, chuyển đến một trang web khác trong cùng một thẻ hoặc ngăn trang tải bằng cách nhấp hoặc nhấn vào dừng tải.
- Nếu điều này xảy ra, các giao dịch có trạng thái HTTP
499thường sẽ khác nhau về thời gian xử lý yêu cầu (Thời gian phản hồi) cho từng yêu cầu. -
Bạn có thể xác định xem đây có phải là nguyên nhân hay không bằng cách so sánh Thời gian phản hồi và xác minh xem thời gian này có khác nhau đối với từng lỗi
499hay không bằng cách sử dụng tính năng Giám sát API hoặc nhật ký truy cập NGINX như được giải thích trong phần Các bước chẩn đoán thường gặp.
Độ phân giải
- Đây là điều bình thường và thường không phải là nguyên nhân đáng lo ngại nếu lỗi HTTP
499xảy ra với số lượng nhỏ. -
Nếu điều này thường xuyên xảy ra đối với cùng một đường dẫn URL, thì có thể là do một proxy cụ thể được liên kết với đường dẫn đó hoạt động rất chậm và người dùng không muốn chờ đợi.
Sau khi biết proxy nào có thể bị ảnh hưởng, hãy sử dụng Trang tổng quan phân tích Độ trễ để tìm hiểu thêm về nguyên nhân gây ra độ trễ của proxy.
- Trong trường hợp này, hãy xác định proxy bị ảnh hưởng bằng cách làm theo các bước trong phần Các bước chẩn đoán thường gặp.
- Sử dụng Trang tổng quan phân tích độ trễ để điều tra thêm về nguyên nhân gây ra độ trễ của proxy và khắc phục vấn đề.
- Nếu thấy độ trễ là điều bình thường đối với một Proxy cụ thể, thì bạn có thể phải thông báo cho người dùng rằng Proxy này sẽ mất một khoảng thời gian để phản hồi.
Nguyên nhân: Ứng dụng hết thời gian chờ
Điều này có thể xảy ra trong một số trường hợp.
-
Dự kiến yêu cầu sẽ mất một khoảng thời gian nhất định (giả sử là 10 giây) để hoàn tất trong điều kiện hoạt động bình thường. Tuy nhiên, ứng dụng khách được đặt với giá trị thời gian chờ không chính xác (giả sử là 5 giây), khiến ứng dụng khách hết thời gian chờ trước khi yêu cầu API hoàn tất, dẫn đến
499. Trong trường hợp này, chúng ta cần đặt thời gian chờ của máy khách thành một giá trị thích hợp. - Một máy chủ đích hoặc chú thích mất nhiều thời gian hơn dự kiến. Trong trường hợp này, bạn cần sửa thành phần thích hợp và điều chỉnh các giá trị thời gian chờ một cách phù hợp.
- Ứng dụng khách không cần phản hồi nữa và do đó đã huỷ. Điều này có thể xảy ra đối với các API có tần suất cao, chẳng hạn như tính năng tự động hoàn thành hoặc tính năng thăm dò ý kiến trong thời gian ngắn.
Chẩn đoán
Giám sát API hoặc nhật ký truy cập NGINX
Chẩn đoán lỗi bằng cách sử dụng tính năng Giám sát API hoặc nhật ký truy cập NGINX:
- Kiểm tra nhật ký Giám sát API hoặc nhật ký truy cập NGINX cho các giao dịch HTTP
499như được giải thích trong phần Các bước chẩn đoán thường gặp. - Xác định xem Thời gian phản hồi có nhất quán cho tất cả các lỗi
499hay không. - Nếu có, thì có thể một ứng dụng khách cụ thể đã định cấu hình thời gian chờ cố định ở phía ứng dụng đó. Nếu một máy chủ đích hoặc proxy API phản hồi chậm, thì máy khách sẽ hết thời gian chờ trước khi proxy hết thời gian chờ, dẫn đến số lượng lớn HTTP
499scho cùng một đường dẫn URI. Trong trường hợp này, hãy xác định Tác nhân người dùng từ nhật ký truy cập NGINX. Nhật ký này có thể giúp bạn xác định ứng dụng khách cụ thể. - Cũng có thể có một bộ cân bằng tải trước Apigee, chẳng hạn như Akamai, F5, AWS ELB, v.v. Nếu Apigee đang chạy sau một trình cân bằng tải tuỳ chỉnh, thì bạn phải định cấu hình thời gian chờ yêu cầu của trình cân bằng tải dài hơn thời gian chờ API của Apigee. Theo mặc định, Bộ định tuyến Apigee sẽ hết thời gian chờ sau 57 giây, vì vậy, bạn nên định cấu hình thời gian chờ yêu cầu là 60 giây trên bộ cân bằng tải.
Trace
Chẩn đoán lỗi bằng Trace
Nếu vấn đề vẫn tiếp diễn (vẫn xảy ra lỗi 499), hãy thực hiện các bước sau:
- Bật phiên truy vết cho API bị ảnh hưởng trong giao diện người dùng Edge.
- Bạn có thể đợi lỗi xảy ra hoặc nếu có lệnh gọi API, hãy thực hiện một số lệnh gọi API và tái tạo lỗi.
- Kiểm tra thời gian đã trôi qua ở mỗi giai đoạn và ghi chú lại giai đoạn mà bạn dành nhiều thời gian nhất.
- Nếu bạn nhận thấy lỗi có thời gian đã trôi qua lâu nhất ngay sau một trong các giai đoạn sau, thì điều đó cho thấy máy chủ phụ trợ đang hoạt động chậm hoặc mất nhiều thời gian để xử lý yêu cầu:
- Đã gửi yêu cầu đến máy chủ đích
- Chính sách ServiceCallout
Dưới đây là một dấu vết giao diện người dùng mẫu cho thấy Gateway Timeout (Hết thời gian chờ của cổng) sau khi Request (Yêu cầu) được gửi đến máy chủ đích:

Độ phân giải
- Tham khảo Các phương pháp hay nhất để định cấu hình thời gian chờ I/O để hiểu rõ những giá trị thời gian chờ cần đặt trên các thành phần khác nhau liên quan đến quy trình yêu cầu API thông qua Apigee Edge.
- Đảm bảo rằng bạn đặt giá trị thời gian chờ thích hợp trên ứng dụng khách theo các phương pháp hay nhất.
Nếu vấn đề vẫn tiếp diễn, hãy chuyển đến phần Phải thu thập thông tin chẩn đoán .
Phải thu thập thông tin chẩn đoán
Nếu vấn đề vẫn tiếp diễn, hãy thu thập thông tin chẩn đoán sau đây rồi liên hệ với Nhóm hỗ trợ Apigee Edge.
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 API Proxy
- Hoàn tất lệnh
curlđược dùng để tái tạo lỗi hết thời gian chờ - Tệp theo dõi cho các yêu cầu API mà bạn thấy lỗi hết thời gian chờ của ứng dụng
Nếu bạn là người dùng Đám mây riêng, 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
- Tệp theo dõi cho các yêu cầu API mà bạn thấy lỗi hết thời gian chờ của ứng dụng
- Nhật ký truy cập NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log) - Nhật ký hệ thống của Trình xử lý tin nhắn (
/opt/apigee/var/log/edge-message-processor/logs/system.log)