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 sẽ nhận được mã trạng thái HTTP 502 Bad Gateway
kèm theo phần tử
mã ECONNRESET
làm phản hồi cho lệnh gọi API trong Edge Microgateway.
Thông báo lỗi
Khách hàng sẽ thấy mã phản hồi sau đây:
HTTP/1.1 502 Bad Gateway
Phản hồi sẽ bao gồm thông báo lỗi sau:
{"message":"socket hang up","code":"ECONNRESET"}
Các nguyên nhân có thể
Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
---|---|---|
Thời gian chờ duy trì hoạt động không được định cấu hình đúng | Thời gian chờ duy trì hoạt động được định cấu hình không chính xác giữa Edge Microgateway và máy chủ mục tiêu. | Người dùng Edge công khai và riêng tư |
Máy chủ mục tiêu đóng sớm kết nối | Máy chủ đích đóng kết nối sớm trong khi Edge Microgateway đang gửi tải trọng yêu cầu. | Người dùng Edge công khai và riêng tư |
Các bước chẩn đoán phổ biến
- Kiểm tra nhật ký của Edge Microgateway:
/var/tmp/edgemicro-`hostname`-*.log
- Tìm kiếm xem có lỗi
502
nào với mãECONNRESET
không trong một khoảng thời gian cụ thể (nếu vấn đề xảy ra trong quá khứ) hoặc nếu có bất kỳ yêu cầu nào vẫn không thành công với502
.2021-06-23T03:52:24.110Z [error][0:8000][3][myorg][test] [emg_badtarget/flakey/hangup][][][6b089a00-d3d6-11eb-95aa-911f1ee6c684] [microgateway-core][][GET][502][socket hang up][ECONNRESET][]
- Nếu cấp độ ghi nhật ký được đặt thành
warn
hoặcinfo
, thì bạn cũng sẽ thấy là một thông báo[warn]
bao gồm tên máy chủ mục tiêu và cổng ở giây thứ hai . Trong ví dụ này, giá trị này làX.X.X.X:8080
và bạn có thể sử dụng giá trị này để chụptcpdump
.2021-06-23T03:52:24.109Z [warn][X.X.X.X:8080][3][myorg][test][emg_badtarget/flakey/hangup] [][][6b089a00-d3d6-11eb-95aa-911f1ee6c684][plugins-middleware] [targetRequest error][GET][][socket hang up][ECONNRESET][395]
- Mã lỗi
[socket hang up][ECONNRESET]
cho biết rằng máy chủ mục tiêu đã đóng kết nối với Edge Microgateway. Bạn có thể tìm kiếm thông tin này trong nhật ký để xác định tần suất xảy ra.
Nguyên nhân: Thời gian chờ duy trì hoạt động không được định cấu hình đúng
Chẩn đoán
- Làm theo các bước trong Các bước chẩn đoán phổ biến và xác minh xem bạn có gặp phải lỗi
[socket hang up][ECONNRESET]
lỗi. Nếu có, hãy tìm hiểu thêm với sự trợ giúp của
tcpdump
như giải thích bên dưới:
Sử dụng tcpdump
- Ghi lại một
tcpdump
giữa Edge Microgateway và máy chủ phụ trợ trên hệ điều hành máy chủ Edge Microgateway bằng lệnh sau:tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
- Phân tích
tcpdump
đã thu thập:Kết quả tcpdump mẫu: ( xem hình ảnh lớn hơn)
Trong
tcpdump
mẫu ở trên, bạn có thể thấy những nội dung sau:- Trong gói 250288, ứng dụng sẽ gửi một yêu cầu
POST
. - Trong gói 250371, máy chủ phản hồi bằng
200 OK
. - Trong gói 250559, ứng dụng sẽ gửi một
ACK.
- Trong gói 250560, máy chủ sẽ gửi
Continuation
. - Trong gói 250561, ứng dụng sẽ gửi một
ACK.
- Trong gói 262436, máy chủ gửi một
FIN, ACK
đến máy khách bắt đầu đóng kết nối. Lưu ý rằng cần khoảng năm giây sau gói trước đó (250561). - Trong gói 262441, ứng dụng sẽ gửi một
POST
khác của bạn. Tuy nhiên, không thực hiện được thao tác này vì máy chủ đã bắt đầu đóng kết nối. Phương thức này phản hồi bằng mộtRST
trong gói 262441.
Trong ví dụ này, kết nối tương tự đã được sử dụng lại ít nhất một lần, nhưng yêu cầu cuối cùng, máy chủ bắt đầu đóng kết nối sau 5 giây thời gian không hoạt động, xảy ra vào cùng thời điểm ứng dụng gửi một yêu cầu mới. Chiến dịch này cho thấy thời gian chờ duy trì hoạt động của máy chủ phụ trợ rất có thể là ngắn hơn hoặc bằng giá trị đã đặt trong ứng dụng. Để xác thực điều này, hãy xem So sánh thời gian chờ duy trì hoạt động trên Edge Microgateway và máy chủ phụ trợ.
- Trong gói 250288, ứng dụng sẽ gửi một yêu cầu
So sánh thời gian chờ duy trì hoạt động
- Edge Microgateway không có thuộc tính thời gian chờ duy trì hoạt động cụ thể. Đó là được xác định theo hệ điều hành nơi quảng cáo đang chạy. Các ví dụ phổ biến là Windows, Vùng chứa Linux và Docker.
- Có thể chức năng này đã được tuỳ chỉnh trong hệ điều hành. Hãy kiểm tra với quản trị viên hệ thống. Theo mặc định, các hệ điều hành Linux đều có chế độ duy trì hoạt động mặc định là 2 giờ.
- Tiếp theo, hãy kiểm tra thuộc tính thời gian chờ duy trì hoạt động được định cấu hình trên máy chủ phụ trợ của bạn. Hãy giả sử máy chủ phụ trợ của bạn được định cấu hình với giá trị là 10 giây.
- Nếu bạn xác định rằng giá trị của thời gian chờ duy trì hoạt động trên hệ điều hành là
cao hơn giá trị của thuộc tính thời gian chờ duy trì hoạt động trên máy chủ phụ trợ như trong
trong ví dụ trên, thì đó là nguyên nhân gây ra lỗi
502
.
Độ phân giải
Đảm bảo rằng thuộc tính thời gian chờ duy trì hoạt động luôn thấp hơn trên hệ điều hành mà Edge Microgateway đang chạy so với máy chủ phụ trợ.
- Xác định giá trị được thiết lập cho thời gian chờ duy trì hoạt động trên máy chủ phụ trợ.
- Định cấu hình một giá trị thích hợp cho thuộc tính thời gian chờ duy trì hoạt động trong hoạt động hệ thống, sao cho thuộc tính thời gian chờ duy trì hoạt động thấp hơn giá trị được đặt trên phần phụ trợ máy chủ của bạn bằng cách làm theo các bước phù hợp với hệ điều hành của bạn.
Phương pháp hay nhất
Bạn nên đảm bảo các thành phần hạ nguồn luôn có thời gian chờ duy trì hoạt động ít hơn
ngưỡng so với được định cấu hình trên các máy chủ lưu trữ ngược dòng (upstream) để tránh các loại tình huống tương tranh này và
502
lỗi. Mỗi bước đi xuống phải thấp hơn mỗi bước nhảy ngược. Cạnh
Microgateway, bạn nên sử dụng các nguyên tắc sau:
Thời gian chờ để ứng dụng duy trì hoạt động trên ứng dụng khách hoặc trình cân bằng tải phải nhỏ hơn Thời gian chờ duy trì hoạt động của Edge Microgateway.
Để định cấu hình thời gian chờ duy trì hoạt động trên Edge Microgateway, hãy thêm hàm
keep_alive_timeout
giá trị cho~/.edgemicro/org-env-config.yaml
.edgemicro: keep_alive_timeout: 65000
- Thời gian chờ duy trì hoạt động của hệ điều hành Edge Microgateway phải nhỏ hơn mục tiêu thời gian chờ giữ hoạt động của máy chủ.
- Nếu bạn có bất kỳ bước nhảy nào khác ở phía trước hoặc phía sau Edge Microgateway, thì quy tắc đó cũng nên áp dụng sẽ được áp dụng. Bạn nên luôn để khách hàng hạ nguồn chịu trách nhiệm đóng kết nối với luồng ngược.
Nguyên nhân: Máy chủ mục tiêu đóng kết nối sớm
Chẩn đoán
- Làm theo các bước được giải thích trong Các bước chẩn đoán phổ biến và xác minh xem bạn có
gặp lỗi
[socket hang up][ECONNRESET]
. - Nếu có, hãy tìm hiểu thêm với sự trợ giúp của
tcpdump
như giải thích bên dưới.Thông báo lỗi
[targetRequest error][GET][][socket hang up][ECONNRESET]
trong ví dụ trên cho biết rằng lỗi này xảy ra khi Edge Microgateway đã gửi yêu cầu đến máy chủ phụ trợ (mục tiêu). Đó là Edge Microgateway đã gửi Yêu cầu API đến máy chủ phụ trợ và đang chờ phản hồi. Tuy nhiên, phần phụ trợ máy chủ đã chấm dứt kết nối đột ngột trước khi Edge Microgateway nhận được phản hồi. - Kiểm tra nhật ký máy chủ phụ trợ của bạn và xem có lỗi hoặc thông tin nào có thể đã khiến máy chủ phụ trợ chấm dứt kết nối đột ngột. Nếu bạn phát hiện lỗi hoặc thông tin, sau đó chuyển đến phần Giải pháp và khắc phục vấn đề một cách phù hợp trong máy chủ phụ trợ.
- Nếu bạn không tìm thấy lỗi hoặc thông tin nào trong máy chủ phụ trợ, hãy thu thập
Đầu ra
tcpdump
trên máy chủ Edge Microgateway:tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
- Phân tích
tcpdump
đã thu thập:Kết quả tcpdump mẫu: ( xem hình ảnh lớn hơn)
Trong
tcpdump
mẫu ở trên, bạn có thể thấy những nội dung sau:- Trong gói 4, Edge Microgateway đã gửi một yêu cầu
GET
đến mục tiêu máy chủ. - Trong gói 5, máy chủ mục tiêu đã phản hồi bằng
ACK
để xác nhận của bạn. - Tuy nhiên, trong gói 6, thay vì phản hồi bằng một tải trọng phản hồi, mục tiêu
máy chủ gửi
FIN, ACK
để khởi tạo đóng kết nối. - Trong các gói 7 trở đi, kết nối sẽ đóng lẫn nhau. Vì kết nối là
đóng trước khi phản hồi được gửi, Edge Microgateway sẽ trả về HTTP
502
lỗi cho máy khách. - Xin lưu ý rằng dấu thời gian của gói 8,
2021-06-23T03:52:24.110Z
tương ứng với dấu thời gian mà lỗi được ghi lại trong Edge Microgateway nhật ký. Dấu thời gian trong các tệp nhật ký và trongtcpdump
thường có thể sẽ được dùng để tương quan lỗi với gói thực tế.
Độ phân giải
Khắc phục vấn đề trên máy chủ phụ trợ một cách thích hợp.
Nếu vấn đề vẫn tiếp diễn và bạn cần hỗ trợ khắc phục sự cố
502 Bad Gateway Error
hoặc nếu bạn nghi ngờ rằng đó là sự cố trong Edge Microgateway, hãy truy cập 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 sự cố vẫn tiếp diễn ngay cả sau khi đã làm theo các hướng dẫn trên, hãy thu thập những thông tin sau thông tin chẩn đoán rồi liên hệ với Bộ phận hỗ trợ Apigee Edge:
- Tệp nhật ký: Thư mục mặc định là
/var/tmp
nhưng có thể bị ghi đè trong tệpconfig.yaml
chính (logging > dir parameter
). Đó là được đề xuất thay đổilog > level
thànhinfo
trước khi cung cấp các tệp nhật ký cho Nhóm hỗ trợ Apigee. - Tệp cấu hình: Cấu hình chính của Edge Microgateway nằm trong
YAML trong thư mục Edge Microgateway mặc định,
$HOME/.edgemicro
. Có một tệp cấu hình mặc định có tên làdefault.yaml
, sau đó tạo một tệp cho mỗi môi trườngORG-ENV-config.yaml
. Vui lòng tải tệp này lên cho tổ chức và môi trường bị ảnh hưởng.
- Trong gói 4, Edge Microgateway đã gửi một yêu cầu