Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Video
Hãy xem các video sau để biết thêm thông tin về lỗi 503:
Video | Mô tả |
---|---|
Khắc phục sự cố và giải quyết lỗi dịch vụ 503 không hoạt động do sự cố DNS | Tìm hiểu về những điều sau:
|
Khắc phục sự cố và giải quyết lỗi dịch vụ 503 không hoạt động do sự cố mạng | Khắc phục sự cố và giải quyết lỗi theo thời gian thực đối với dịch vụ 503 không hoạt động do sự cố về mạng trong Apigee Edge |
Triệu chứng
Ứng dụng nhận được trạng thái phản hồi HTTP 503 với thông báo Service Available sau lệnh gọi proxy API.
Thông báo lỗi
Bạn có thể thấy thông báo lỗi sau:
HTTP/1.1 503 Service Unavailable
Bạn cũng có thể thấy thông báo lỗi sau trong phản hồi HTTP:
Dịch vụ không có sẵn
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable" } } }
Các nguyên nhân có thể
Phản hồi HTTP 503 Service Available (Không có dịch vụ 503) kèm theo mã lỗi messaging.adaptors.http.flow.ServiceUnavailable
xảy ra nếu Trình xử lý tin nhắn của Apigee Edge gặp lỗi do hết thời gian kết nối, không chính xác
tên máy chủ lưu trữ hoặc lỗi bắt tay SSL khi giao tiếp với máy chủ phụ trợ.
Nguyên nhân có thể dẫn đến phản hồi 503 Service Available là:
Nguyên nhân | Mô tả | Người có thể thực hiện các bước khắc phục sự cố |
---|---|---|
Lỗi kết nối do độ phân giải DNS không chính xác | Quá trình phân giải DNS của máy chủ đích dẫn đến địa chỉ IP không hợp lệ dẫn đến lỗi kết nối. | Người dùng Edge Private Cloud |
Lỗi kết nối | Các vấn đề về mạng hoặc khả năng kết nối khiến ứng dụng không kết nối được với máy chủ. | Người dùng Edge Private Cloud |
Tên máy chủ máy chủ mục tiêu không chính xác | Máy chủ lưu trữ máy chủ mục tiêu được chỉ định không chính xác hoặc có các ký tự không mong muốn (chẳng hạn như dấu cách). | Người dùng Edge công khai và riêng tư |
Lỗi bắt tay SSL | Không thể bắt tay TLS/SSL giữa ứng dụng và máy chủ. (Khắc phục sự cố cho lớp này của vấn đề sẽ được đề cập trong một chủ đề riêng). | Người dùng Edge công khai và riêng tư |
Các bước chẩn đoán phổ biến
Xác định Mã nhận dạng tin nhắn của yêu cầu không thành công
Công cụ theo dõi
Để xác định mã nhận dạng thông báo của yêu cầu không thành công bằng Công cụ theo dõi:
- Nếu vấn đề vẫn còn, hãy bật phiên theo dõi cho API bị ảnh hưởng.
- Thực hiện lệnh gọi API và tái hiện vấn đề – Dịch vụ 503 không hoạt động kèm mã lỗi
messaging.adaptors.http.flow.ServiceUnavailable.
- Chọn một trong các yêu cầu không thực hiện được.
- Chuyển đến giai đoạn AX và xác định mã thông báo (
X-Apigee.Message-ID
) của yêu cầu bằng cách di chuyển xuống phần Chi tiết giai đoạn như trong hình sau.
Nhật ký truy cập NGINX
Cách xác định mã nhận dạng thư của yêu cầu không thực hiện được bằng nhật ký truy cập NGINX:
Bạn cũng có thể tham khảo nhật ký NGINX Access để xác định ID thông báo cho lỗi 503. Điều này đặc biệt hữu ích nếu vấn đề đã xảy ra trong quá khứ hoặc nếu vấn đề không liên tục và bạn không thể ghi lại dấu vết trong giao diện người dùng. Hãy làm theo các bước sau để xác định thông tin này từ nhật ký truy cập NGINX:
- 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ó Lỗi 503 nào đối với proxy API cụ thể trong một khoảng thời gian cụ thể hay không (nếu sự cố đã 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ề 503.
- Nếu xảy ra bất kỳ Lỗi 503 nào với X-Apigee-fault-code message.adaptors.http.flow.ServiceAvailable,
lưu ý mã nhận dạng thông báo cho một hoặc nhiều yêu cầu như trong ví dụ sau:
Mục nhập mẫu cho thấy Lỗi 503
Lỗi kết nối do độ phân giải DNS không chính xác
Chẩn đoán
- Xác định mã nhận dạng thông báo của yêu cầu không thành công.
- Tìm kiếm mã thông báo yêu cầu cụ thể trong nhật ký Trình xử lý thông báo (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). Bạn có thể thấy những lỗi sau:
Lỗi onConnectTimeout cho biết Trình xử lý thông báo không thể kết nối với máy chủ phụ trợ trong khoảng thời gian chờ kết nối đã đặt trước (Mặc định: 3 giây).2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11 resolvedAddress=www.abc.com/22.22.22.22 2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
- Hãy ghi lại địa chỉ IP đã phân giải trong lỗi onConnectTimeout và kiểm tra xem địa chỉ IP có hợp lệ với máy chủ phụ trợ của bạn hay không. Nếu địa chỉ IP là hợp lệ, hãy chuyển đến phần Lỗi kết nối.
- Nếu địa chỉ IP không hợp lệ, thì nguyên nhân rất có thể là do các vấn đề về quá trình phân giải DNS.
- Lặp lại bước 3 và bước 4 cho một vài yêu cầu API không thành công nữa và xác minh xem bạn có thấy địa chỉ IP đó hay bất kỳ địa chỉ IP nào khác không hợp lệ.
- Tìm thư có từ khoá Làm mới DNS trong Nhật ký Trình xử lý Thư (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). Kiểm tra xem thỉnh thoảng có thêm địa chỉ IP không hợp lệ hoặc không hợp lệ vào bộ nhớ đệm DNS trên Trình xử lý thư hay không.2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
- Vấn đề này có thể xảy ra nếu có vấn đề với các máy chủ DNS có thẩm quyền hoặc máy chủ định danh đã định cấu hình trong
/etc/resolv.conf
.
Thông thường, có thể có một hoặc nhiều máy chủ DNS có thẩm quyền được định cấu hình để thực hiện quá trình phân giải DNS. Nếu không có máy chủ DNS đáng tin cậy, thì hệ thống sẽ quay lại thiết lập cấu hình trong/etc/resolv.conf
và thực hiện quá trình phân giải DNS khi thích hợp. Ví dụ: Nếu/etc/resolv.conf
được định cấu hình để sử dụng máy chủ định danh cụ thể, thì những máy chủ định danh đó sẽ được dùng để phân giải DNS. - Nếu có vấn đề với máy chủ DNS hoặc máy chủ định danh có thẩm quyền được chỉ định trong
/etc/resolv.conf
, thì tên máy chủ lưu trữ máy chủ phụ trợ sẽ được phân giải thành địa chỉ IP không hợp lệ/không hợp lệ. Sau đó, địa chỉ IP không hợp lệ/không hợp lệ sẽ được lưu trữ trong bộ nhớ đệm DNS của Bộ xử lý thư.- Nếu vấn đề liên tục xảy ra với máy chủ DNS hoặc máy chủ định danh có thẩm quyền được chỉ định trong
/etc/resolv.conf
, thì địa chỉ IP không hợp lệ/không hợp lệ sẽ tiếp tục nằm trong bộ nhớ đệm DNS của Trình xử lý thư. Miễn là các địa chỉ IP không hợp lệ được lưu trữ trong bộ nhớ đệm DNS của Bộ xử lý thông báo, các yêu cầu cho tất cả các API đó sử dụng máy chủ phụ trợ cụ thể sẽ không thành công kèm theo lỗi 503. - Nếu vấn đề xảy ra không liên tục với máy chủ DNS hoặc máy chủ định danh có thẩm quyền được chỉ định trong
/etc/resolv.conf
, thì địa chỉ IP tốt và không hợp lệ sẽ được lưu trữ không liên tục trong bộ nhớ đệm DNS. Trong trường hợp này, bạn sẽ thấy lỗi 503 không liên tục cho tất cả các API đó sử dụng máy chủ phụ trợ cụ thể.
- Nếu vấn đề liên tục xảy ra với máy chủ DNS hoặc máy chủ định danh có thẩm quyền được chỉ định trong
- Nếu sự cố với máy chủ DNS vẫn tiếp diễn, bạn sẽ thấy lỗi liên tục. Nếu sự cố với máy chủ DNS không liên tục, bạn sẽ thấy các lỗi không liên tục. Tức là bất cứ khi nào tên máy chủ lưu trữ của máy chủ phụ trợ được phân giải thành địa chỉ IP không hợp lệ, thì bạn sẽ thấy lỗi 503. Và khi tên máy chủ lưu trữ của máy chủ phụ trợ được phân giải thành địa chỉ IP hợp lệ, bạn sẽ thấy các phản hồi thành công.
Độ phân giải
Vui lòng làm việc với quản trị viên hệ điều hành của bạn và khắc phục vấn đề với máy chủ DNS.
- Nếu xảy ra vấn đề với máy chủ DNS hoặc máy chủ định danh có thẩm quyền được chỉ định trong
/etc/resolv.conf
, hãy khắc phục vấn đề với máy chủ phù hợp để giải quyết vấn đề này. - Nếu có bất kỳ sự cố nào với cấu hình trong
/etc/resolv.conf
trên các hệ thống có Bộ xử lý tin nhắn, hãy khắc phục sự cố cấu hình.
Lỗi kết nối
Đã xảy ra lỗi kết nối khi Trình xử lý tin nhắn Apigee Edge cố gắng kết nối với một phần phụ trợ và một trong các sự cố sau xảy ra:
- Trình xử lý thư không thể kết nối trong khoảng thời gian chờ kết nối đã đặt trước. (Mặc định: 3 giây)
- Máy chủ phụ trợ từ chối kết nối.
Chẩn đoán
- Xác định mã nhận dạng thông báo của yêu cầu không thành công.
-
Tìm kiếm mã thông báo yêu cầu cụ thể trong nhật ký Trình xử lý thông báo (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). Bạn có thể thấy các lỗi sau:-
Lỗi onConnectTimeout cho biết rằng Trình xử lý thư không thể
kết nối với máy chủ phụ trợ trong khoảng thời gian chờ kết nối đã đặt trước.
2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11 2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
-
Lỗi java.net.ConnectException: Kết nối bị từ chối cho biết kết nối
đã bị máy chủ phụ trợ từ chối.
14:40:16.531 +0530 2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {} java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75] at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75] at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na] at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
-
Lỗi onConnectTimeout cho biết rằng Trình xử lý thư không thể
kết nối với máy chủ phụ trợ trong khoảng thời gian chờ kết nối đã đặt trước.
- Kiểm tra xem bạn có thể kết nối trực tiếp với máy chủ phụ trợ cụ thể từ mỗi
Trình xử lý thư sử dụng lệnh
telnet
:- Nếu máy chủ phụ trợ phân giải thành một địa chỉ IP duy nhất, hãy sử dụng lệnh sau:
telnet BackendServer-IPaddress 443
- Nếu máy chủ phụ trợ phân giải thành nhiều địa chỉ IP, hãy sử dụng tên máy chủ của
máy chủ phụ trợ trong lệnh
telnet
như minh hoạ dưới đây:telnet BackendServer-HostName 443
- Nếu máy chủ phụ trợ phân giải thành một địa chỉ IP duy nhất, hãy sử dụng lệnh sau:
- Nếu có thể kết nối với máy chủ phụ trợ thì bạn có thể thấy một thông báo tương tự như
Connected to backend-server
. Nếu bạn không thể kết nối với máy chủ phụ trợ, thì nguyên nhân có thể là vì Trình xử lý thư Địa chỉ IP không có trong danh sách cho phép trên phần phụ trợ cụ thể máy chủ.
Độ phân giải
Cấp quyền truy cập vào địa chỉ IP của Trình xử lý thư trên máy chủ phụ trợ cụ thể để cho phép lưu lượng truy cập từ Edge Message Processors để truy cập vào máy chủ phụ trợ của bạn. Ví dụ: Trên Linux, bạn có thể sử dụng iptables để cho phép lưu lượng truy cập từ địa chỉ IP của Trình xử lý thư trên máy chủ phụ trợ.
Nếu sự cố vẫn tiếp diễn, hãy làm việc với Quản trị viên mạng của bạn để xác định và khắc phục vấn đề. Nếu bạn cần hỗ trợ thêm từ Apigee, hãy liên hệ với Nhóm hỗ trợ Apigee.
Tên máy chủ lưu trữ của máy chủ mục tiêu không chính xác
Chẩn đoán
Nếu tên máy chủ lưu trữ được chỉ định trong máy chủ mục tiêu không chính xác, thì bạn có thể nhận được phản hồi 503 Service Available kèm theo mã lỗi
messaging.adaptors.http.flow.ServiceUnavailable.
Công cụ theo dõi
Cách chẩn đoán bằng công cụ Theo dõi:
- Nếu vấn đề vẫn còn, hãy bật phiên theo dõi cho API bị ảnh hưởng.
- Thực hiện lệnh gọi API và tái hiện vấn đề – Dịch vụ 503 không hoạt động kèm mã lỗi
messaging.adaptors.http.flow.ServiceUnavailable.
- Chọn một trong các yêu cầu không thực hiện được.
- Di chuyển qua các giai đoạn của quá trình theo dõi và xác định nơi xảy ra lỗi.
- Chọn FlowInfo có lỗi. Bạn có thể tìm thêm thông tin trong trường error.cause để biết nguyên nhân gây ra lỗi như trong ví dụ sau:
Yêu cầu mẫu cho thấy lỗi.nguyên nhân trong dấu vết
- Nếu bạn thấy thông báo error.cause hiển thị là error.cause, thì nguyên nhân có thể gây ra lỗi là một trong những nguyên nhân sau:
- Tên máy chủ được chỉ định trong cấu hình điểm cuối mục tiêu/máy chủ mục tiêu không chính xác hoặc có dấu cách hay ký tự đặc biệt không mong muốn.
Ví dụ: có một dấu cách không mong muốn trong tên máy chủ như minh hoạ dưới đây:
"demo-target.apigee.net "
- Tên máy chủ bị ghi đè bằng biến target.url trong API Proxy bằng AssignmentMessage hoặc Chính sách JavaScript không chính xác hoặc có dấu cách hay bất kỳ ký tự đặc biệt không mong muốn nào khác.
- Tên máy chủ được chỉ định trong cấu hình điểm cuối mục tiêu/máy chủ mục tiêu không chính xác hoặc có dấu cách hay ký tự đặc biệt không mong muốn.
- Hãy kiểm tra cấu hình thiết bị đầu cuối đích và/hoặc định nghĩa máy chủ đích để xem tên máy chủ lưu trữ của máy chủ mục tiêu có chính xác hoặc có dấu cách hay ký tự đặc biệt không mong muốn nào không.
- Nếu máy chủ lưu trữ máy chủ mục tiêu được tạo theo phương thức động, hãy kiểm tra chính sách phù hợp (ví dụ: chính sách AssignmentMessage/JavaScript) dùng để tạo máy chủ đó. Kiểm tra để kiểm tra xem tên máy chủ lưu trữ của máy chủ mục tiêu có chính xác hoặc có bất kỳ khoảng trắng hoặc ký tự đặc biệt nào không mong muốn không.
- Sau khi bạn xác định được tên máy chủ lưu trữ của máy chủ mục tiêu, hãy chạy lệnh
nslookup/dig
trên tên máy chủ đó để xem có thể giải quyết được vấn đề hay không.Ví dụ: chạy lệnh
nslookup
trên tên máy chủ có dấu cách không mong muốn sẽ trả về kết quả sau:nslookup "demo-target.apigee.net " Server: 49.205.75.2 Address: 49.205.75.2#53 ** server can't find demo-target.apigee.net\032: NXDOMAIN
- Nếu lệnh
nslookup
của hệ điều hành cũng không phân giải được tên máy chủ lưu trữ, thì nguyên nhân của vấn đề này là do tên máy chủ lưu trữ được sử dụng cho máy chủ mục tiêu không chính xác.Chuyển đến Độ phân giải.
Nhật ký trình xử lý thư
Cách chẩn đoán bằng nhật ký trình xử lý thư:
- Xác định mã nhận dạng thông báo của yêu cầu không thành công.
- Tìm kiếm mã nhận dạng thư trong nhật ký Trình xử lý thư. (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) - Nếu bạn thấy thông báo lỗi/cảnh báo sau đây thì Trình xử lý thông báo không thể phân giải tên máy chủ. Vì thư sẽ bị tạm ẩn nên bạn có thể không thấy thư này
cho tất cả mã/yêu cầu thư.
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
- Tiếp theo là thông báo cảnh báo, Trình xử lý thư xoá địa chỉ khỏi bộ nhớ đệm DNS vì không thể truy cập máy chủ lưu trữ máy chủ đích.
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
- Sau đó, bạn có thể thấy thông báo khi Trình xử lý thư bị lỗi với ngoại lệ “Không thể truy cập máy chủ”. Đôi khi, tên máy chủ lưu trữ sẽ xuất hiện trong thông báo lỗi:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to demo-target.apigee.net failed with exception {} java.lang.RuntimeException: Host not reachable at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704) at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675) at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234) …<snipped>
- Đôi khi, tên máy chủ có thể hiển thị dưới dạng null vì không thể phân giải hoặc truy cập tên máy chủ như minh hoạ dưới đây:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to null failed with exception {} java.lang.RuntimeException: Host not reachable at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704) at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675) at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234) …<snipped>
- Lỗi
Host not reachable
thường xảy ra trong một trong các trường hợp sau:- Tên máy chủ được chỉ định trong cấu hình điểm cuối mục tiêu/máy chủ mục tiêu không chính xác hoặc có dấu cách hay ký tự đặc biệt không mong muốn.
Ví dụ: có một không gian không mong muốn trong tên máy chủ lưu trữ "demo-target.apigee.net " trong thông báo lỗi sau:NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to demo-target.apigee.net failed with exception
- Tên máy chủ bị ghi đè bằng biến target.url trong API Proxy bằng chính sách AssignmentMessage hoặc JavaScript không chính xác hoặc có dấu cách hay bất kỳ ký tự đặc biệt nào khác không mong muốn.
- Tên máy chủ được chỉ định trong cấu hình điểm cuối mục tiêu/máy chủ mục tiêu không chính xác hoặc có dấu cách hay ký tự đặc biệt không mong muốn.
- Xác định tên máy chủ lưu trữ của máy chủ mục tiêu mà Trình xử lý thông báo đang cố giao tiếp bằng cách sử dụng một trong các cách sau:
- Hãy kiểm tra kỹ thông báo lỗi có chứa
Host not reachable
. - Nếu thông báo lỗi hiển thị tên máy chủ thì hãy sao chép tên máy chủ đó (bao gồm cả dấu cách hoặc ký tự đặc biệt).
- Nếu thông báo lỗi hiển thị giá trị null cho tên máy chủ như trong thông báo lỗi sau đây,
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to null failed with exception {}
- Xác định tên máy chủ lưu trữ bằng cách kiểm tra định nghĩa máy chủ mục tiêu dùng trong Proxy API bị lỗi.
- Nếu máy chủ lưu trữ máy chủ mục tiêu được tạo một cách linh động, hãy kiểm tra chính sách phù hợp (ví dụ: assignMessage/JavaScript) dùng để tạo máy chủ đó.
- Sau khi bạn đã xác định được tên máy chủ lưu trữ của máy chủ mục tiêu, hãy chạy lệnh nslookup/dig trên tên máy chủ và kiểm tra xem có thể giải quyết được lỗi đó hay không.
Ví dụ: chạy lệnh nslookup trên tên máy chủ có chứa một dấu cách
nslookup "demo-target.apigee.net " Server: 49.205.75.2 Address: 49.205.75.2#53 ** server can't find demo-target.apigee.net\032: NXDOMAIN
- Nếu lệnh Hệ điều hành nslookup cũng không phân giải được tên máy chủ, thì nguyên nhân của vấn đề này là do tên máy chủ được sử dụng cho máy chủ mục tiêu không chính xác.
Độ phân giải
- Đảm bảo tên máy chủ lưu trữ của máy chủ mục tiêu được chỉ định trong cấu hình thiết bị đầu cuối mục tiêu hoặc trong máy chủ mục tiêu định nghĩa chính xác và không có bất kỳ dấu cách hoặc ký tự đặc biệt nào không mong muốn.
- Nếu bạn sử dụng chính sách AssignmentMessage/JavaScript bất kỳ để tạo động tên máy chủ lưu trữ máy chủ mục tiêu, hãy điều tra định nghĩa chính sách và mã và đảm bảo rằng tên máy chủ mục tiêu được tạo chính xác.
Lỗi bắt tay SSL
Toàn bộ cẩm nang khắc phục sự cố đều dành cho các lỗi bắt tay TLS/SSL. Xem Lỗi bắt tay SSL.
Xác định nguồn gốc vấn đề
Một số loại lỗi nhất định có thể xảy ra khi đi (đi hướng bắc) hoặc đi (theo hướng nam) kết nối. Lỗi đến (theo hướng bắc) xảy ra giữa ứng dụng và Edge. Một lỗi đi (về phía nam) xảy ra giữa Edge và máy chủ đích phụ trợ. Để chẩn đoán công việc đầu tiên của bạn là tìm hiểu xem lỗi đó xảy ra ở hướng bắc hay kết nối hướng nam.
Tìm hiểu sự kết nối giữa hướng bắc và hướng nam
Trong Edge, bạn có thể gặp lỗi 503 Service Available (Không có dịch vụ) khi kết nối đến hoặc đi:
- Đường kết nối đến (hoặc theo hướng bắc) – Kết nối giữa ứng dụng và Bộ định tuyến Edge. Bộ định tuyến là thành phần của Apigee Edge, xử lý các yêu cầu đến được gửi đến hệ thống.
- Kết nối đi (hoặc hướng nam) – Kết nối giữa các cạnh Trình xử lý thông báo và máy chủ phụ trợ. Trình xử lý tin nhắn là một thành phần của Apigee Edge proxy các yêu cầu API đến máy chủ mục tiêu phụ trợ.
Nếu là người dùng Edge Public Cloud, có thể bạn không biết về các thành phần nội bộ như hoặc Bộ định tuyến. Không thể nhìn thấy hoặc truy cập vào các thành phần nội bộ này Người dùng Cloud công khai. Nếu có thể, chúng tôi sẽ cung cấp các cách thay thế để điều tra vấn đề không yêu cầu quyền truy cập trực tiếp vào các thành phần này.
Hình sau đây minh hoạ các kết nối hướng bắc và nam cho Apigee Cạnh.
Xác định vị trí xảy ra lỗi 503 Service Existing (Không có sẵn dịch vụ 503)
Hãy sử dụng một trong các quy trình sau để xác định xem lỗi 503 Service Available có xảy ra hay không tại điểm nối hướng bắc hoặc hướng nam.
Dấu vết giao diện người dùng
Cách xác định vị trí xảy ra lỗi bằng tính năng Theo dõi giao diện người dùng:
- Nếu vấn đề vẫn tiếp diễn, hãy bật tính năng theo dõi giao diện người dùng cho API bị ảnh hưởng.
- Nếu dấu vết giao diện người dùng cho yêu cầu API không thành công cho thấy lỗi 503 Service Available (Không có sẵn dịch vụ) xảy ra trong luồng yêu cầu mục tiêu hoặc được gửi bởi máy chủ phụ trợ, thì vấn đề hướng về phía nam (tức là giữa Trình xử lý thông báo và phần phụ trợ máy chủ).
- Nếu bạn không nhận được dấu vết cho lệnh gọi API cụ thể, thì vấn đề là hướng hướng bắc, giữa ứng dụng khách và Bộ định tuyến.
Giám sát API
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 các lỗi, hiệu suất và độ trễ cũng như nguồn gốc của các vấn đề đó. 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 qua một tình huống mẫu minh hoạ cách khắc phục sự cố 5xx với API của bạn bằng cách sử dụng Giám sát API.
Ví dụ: bạn nên thiết lập cảnh báo để nhận thông báo khi số lượng lỗi messaging.adaptors.http.flow.ServiceUnavailable
vượt quá một ngưỡng cụ thể.
Nhật ký truy cập NGINX
Cách xác định vị trí xảy ra lỗi bằng tính năng Theo dõi giao diện người dùng:
Nếu sự cố đã xảy ra trong quá khứ hoặc nếu sự cố không liên tục và bạn không thể ghi lại dấu vết, sau đó thực hiện các bước sau:
- 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ó Lỗi 503 nào đối với proxy API cụ thể không.
- Nếu bạn có thể xác định bất kỳ Lỗi 503 nào cho API cụ thể tại một thời điểm cụ thể, thì sự cố đã xảy ra tại điểm kết nối hướng về phía nam (giữa Bộ xử lý thông báo và máy chủ phụ trợ).
- Nếu không thì vấn đề đã xảy ra tại điểm kết nối hướng bắc chuẩn (giữa ứng dụng khách và Bộ định tuyến).