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 là 502 Bad Gateway với mã ECONNRESET dưới dạng phản hồi cho các lệnh gọi API trong Edge Microgateway.
Thông báo lỗi
Ứng dụng sẽ thấy mã phản hồi sau:
HTTP/1.1 502 Bad Gateway
Câu trả lời sẽ có 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 |
|---|---|---|
| Định cấu hình thời gian chờ duy trì kết nối không chính xác | Thời gian chờ duy trì kết nối được định cấu hình không chính xác giữa Edge Microgateway và máy chủ đích. | Người dùng Edge Public Cloud và Private Cloud |
| Máy chủ đích đóng kết nối quá sớm | Máy chủ đích đóng kết nối quá sớm trong khi Edge Microgateway đang gửi tải trọng yêu cầu. | Người dùng Edge Public Cloud và Private Cloud |
Các bước chẩn đoán thường gặp
- Kiểm tra nhật ký Edge Microgateway:
/var/tmp/edgemicro-`hostname`-*.log
- Tìm xem có lỗi
502nào có mãECONNRESETtrong một khoảng thời gian cụ thể hay không (nếu vấn đề xảy ra trong quá khứ) hoặc có yêu cầu nào vẫn không thành công với502hay không.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 bạn đặt cấp độ ghi nhật ký thành
warnhoặcinfo, thì cũng sẽ có một thông báo[warn]bao gồm tên máy chủ và cổng đích trong phần tử thứ hai. Trong ví dụ này, đó làX.X.X.X:8080và bạn có thể dùng mã này sau để 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ủ đích đã đó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ì kết nối được định cấu hình không chính xác
Chẩn đoán
- Làm theo các bước trong phần Các bước chẩn đoán thường gặp và xác minh xem bạn có gặp lỗi
[socket hang up][ECONNRESET]hay không. Nếu có, hãy điều tra thêm với sự trợ giúp của
tcpdumpnhư giải thích bên dưới:
Sử dụng tcpdump
- Ghi lại
tcpdumpgiữ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đã ghi lại:Ví dụ về đầu ra tcpdump: ( xem hình ảnh lớn hơn)
Trong mẫu
tcpdumpở trên, bạn có thể thấy những thông tin sau:- Trong gói 250288, ứng dụng 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 gửi một
ACK. - Trong gói 250560, máy chủ sẽ gửi thông báo
Continuation. - Trong gói 250561, máy khách sẽ gửi một
ACK. - Trong gói 262436, máy chủ sẽ gửi một
FIN, ACKđến máy khách khởi tạo việc đóng kết nối. Xin lưu ý rằng đây là khoảng 5 giây sau gói trước đó (250561). - Trong gói 262441, ứng dụng gửi một yêu cầu
POSTkhác. Tuy nhiên, điều này không thành công vì máy chủ đã bắt đầu đóng kết nối. Nó phản hồi bằng mộtRSTtrong gói 262441.
Trong ví dụ này, cùng một kết nối đã được sử dụng lại ít nhất một lần thành công, nhưng trong yêu cầu cuối cùng, máy chủ sẽ bắt đầu đóng kết nối sau 5 giây không hoạt động. Điều này xảy ra cùng lúc với thời điểm ứng dụng gửi một yêu cầu mới. Điều này cho thấy thời gian chờ duy trì kết nối của máy chủ phụ trợ có khả năng ngắn hơn hoặc bằng giá trị được đặt trong máy khách. Để xác thực điều này, hãy xem phần So sánh thời gian chờ duy trì kết nối trên Edge Microgateway và máy chủ phụ trợ.
- Trong gói 250288, ứng dụng gửi một yêu cầu
So sánh thời gian chờ duy trì kết nối
- Edge Microgateway không có thuộc tính thời gian chờ duy trì kết nối cụ thể. Được xác định bằng hệ điều hành nơi ứng dụng đang chạy. Các ví dụ phổ biến là Windows, Linux và vùng chứa Docker.
- Có thể chế độ này được tuỳ chỉnh trong hệ điều hành. Hãy liên hệ với quản trị viên hệ thống của bạn. Theo mặc định, hệ điều hành Linux có thời gian chờ mặc định để duy trì kết nối là 2 giờ.
- Tiếp theo, hãy kiểm tra thuộc tính thời gian chờ duy trì kết nối được định cấu hình trên máy chủ phụ trợ. 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ì kết nối trên hệ điều hành cao hơn giá trị của thuộc tính thời gian chờ duy trì kết nối trên máy chủ phụ trợ như 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 nơi Edge Microgateway đang chạy so với trên máy chủ phụ trợ.
- Xác định giá trị được đặt 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ì kết nối trong hệ điều hành, sao cho thuộc tính thời gian chờ duy trì kết nối thấp hơn giá trị được đặt trên máy chủ phụ trợ, bằng cách sử dụng các bước áp dụng cho hệ điều hành của bạn.
Phương pháp hay nhất
Bạn nên đặt ngưỡng thời gian chờ duy trì kết nối cho các thành phần hạ lưu luôn thấp hơn ngưỡng được định cấu hình trên các máy chủ thượng lưu để tránh những loại điều kiện xung đột và lỗi 502 này. Mỗi bước nhảy xuôi dòng phải thấp hơn mỗi bước nhảy ngược dòng. Trong Edge Microgateway, bạn nên tuân theo các nguyên tắc sau:
Thời gian chờ duy trì kết nối trên ứng dụng máy khách hoặc bộ cân bằng tải phải nhỏ hơn thời gian chờ duy trì kết nối 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 giá trị
keep_alive_timeoutvào tệp~/.edgemicro/org-env-config.yaml.edgemicro: keep_alive_timeout: 65000
- Thời gian chờ hoạt động của hệ điều hành Edge Microgateway phải nhỏ hơn thời gian chờ hoạt động của máy chủ đích.
- Nếu bạn có bất kỳ bước nhảy nào khác trước hoặc sau Edge Microgateway, thì bạn cũng nên áp dụng quy tắc tương tự. Bạn luôn phải để cho ứng dụng khách hạ lưu chịu trách nhiệm đóng kết nối với thượng lưu.
Nguyên nhân: Máy chủ đích đóng kết nối quá sớm
Chẩn đoán
- Thực hiện theo các bước được giải thích trong phần Các bước chẩn đoán thường gặp và xác minh xem bạn có gặp lỗi
[socket hang up][ECONNRESET]hay không. - Nếu có, hãy điều tra thêm với sự trợ giúp của
tcpdumpnhư được 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 lỗi này xảy ra khi Edge Microgateway đang gửi yêu cầu đến máy chủ phụ trợ (mục tiêu). Tức 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, máy chủ phụ trợ đã đột ngột chấm dứt kết nối trước khi Edge Microgateway nhận được phản hồi. - Kiểm tra nhật ký máy chủ phụ trợ và xem có lỗi hoặc thông tin nào có thể khiến máy chủ phụ trợ đột ngột chấm dứt kết nối hay không. Nếu bạn phát hiện thấy lỗi hoặc thông tin nào, hãy chuyển đến phần Giải pháp và khắc phục vấn đề một cách thích hợp trong máy chủ phụ trợ của bạn.
- 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
tcpdumptrên máy chủ Edge Microgateway:tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
- Phân tích
tcpdumpđã ghi lại:Ví dụ về đầu ra tcpdump: ( xem hình ảnh lớn hơn)
Trong mẫu
tcpdumpở trên, bạn có thể thấy những thông tin sau:- Trong gói 4, Edge Microgateway đã gửi một yêu cầu
GETđến máy chủ đích. - Trong gói 5, máy chủ đích đã phản hồi bằng
ACKđể xác nhận yêu cầu. - Tuy nhiên, trong gói 6, thay vì phản hồi bằng tải trọng phản hồi, máy chủ đích sẽ gửi một
FIN, ACKđể bắt đầu đó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 đã bị đóng trước khi phản hồi được gửi, nên Edge Microgateway sẽ trả về lỗi HTTP
502cho ứng dụng. - Xin lưu ý rằng dấu thời gian của gói 8,
2021-06-23T03:52:24.110Ztương ứng với dấu thời gian mà lỗi được ghi vào nhật ký Edge Microgateway. Bạn có thể dùng dấu thời gian trong tệp nhật ký và trongtcpdumpđể liên kết các lỗi với các 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 được hỗ trợ khắc phục sự cố
502 Bad Gateway Errorhoặc bạn nghi ngờ đó là vấn đề trong Edge Microgateway, hãy chuyển đến phần Bạ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 ngay cả sau khi bạn làm theo hướng dẫn ở trê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:
- Tệp nhật ký: Thư mục mặc định là
/var/tmpnhưng có thể bị ghi đè trong tệpconfig.yamlchính (logging > dir parameter). Bạn nên thay đổilog > levelthànhinfotrước khi cung cấp 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 tệp 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 đó là 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 đầy đủ 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