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
Video
Hãy xem các video sau đây để biết thêm thông tin về lỗi 503:
| Video | Mô tả |
|---|---|
| Khắc phục và giải quyết lỗi 503 Không có dịch vụ do vấn đề về DNS | Tìm hiểu về những nội dung sau:
|
| Khắc phục và giải quyết lỗi 503 Không có dịch vụ do sự cố mạng | Khắc phục sự cố và giải quyết Lỗi 503 Không có dịch vụ theo thời gian thực do sự cố về Mạng trong Apigee Edge |
Dấu hiệu
Ứng dụng khách nhận được mã trạng thái phản hồi HTTP 503 kèm theo thông báo Dịch vụ không hoạt động sau khi gọi một 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 hoạt động
{
"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 Unavailable với mã lỗi messaging.adaptors.http.flow.ServiceUnavailable xảy ra nếu Message Processor của Apigee Edge gặp lỗi do hết thời gian chờ kết nối, tên máy chủ không chính xác hoặc lỗi bắt tay SSL trong khi giao tiếp với máy chủ phụ trợ.
Các nguyên nhân có thể dẫn đến phản hồi 503 Service Unavailable (Dịch vụ không hoạt động) là:
| Nguyên nhân | Mô tả | Những 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 | Quy trình phân giải DNS của máy chủ đích dẫn đến các địa chỉ IP không hợp lệ, gây ra 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 kết nối khiến ứng dụng không thể kết nối với máy chủ. | Người dùng Edge Private Cloud |
| Tên máy chủ lưu trữ đích không chính xác | Máy chủ lưu trữ đích đượ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 Public Cloud và Private Cloud |
| Lỗi bắt tay giao thức SSL | Không bắt tay được TLS/SSL giữa ứng dụng và máy chủ. (Phần khắc phục sự cố cho loại vấn đề này được đề cập trong một chủ đề riêng.) | Người dùng Edge Public Cloud và Private Cloud |
Các bước chẩn đoán thường gặp
Xác định Mã thông báo của yêu cầu không thành công
Công cụ theo dõi
Cách xác định mã 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 đang diễn ra, 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 đề – Lỗi 503 Dịch vụ không hoạt động với mã lỗi
messaging.adaptors.http.flow.ServiceUnavailable. - Chọn một trong các yêu cầu không thành công.
- Chuyển đến giai đoạn AX và xác định mã nhận dạng thông báo (
X-Apigee.Message-ID) của yêu cầu bằng cách di chuyển xuống trong phần Thông tin chi tiết về giai đoạn như minh hoạ trong hình sau.
Nhật ký truy cập NGINX
Cách xác định mã thông báo 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ý truy cập NGINX để xác định mã 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 đề xảy ra 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 xem có Lỗi 503 nào cho một proxy API cụ thể 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 có yêu cầu nào vẫn gặp lỗi 503 hay không.
- Nếu có bất kỳ Lỗi 503 nào với thông báo X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable, hãy ghi lại mã thông báo cho một hoặc nhiều yêu cầu như vậy như trong ví dụ sau:
Ví dụ về mục nhập 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ã thông báo của yêu cầu không thành công.
- Tìm mã nhận dạng thông báo yêu cầu cụ thể trong nhật ký Message Processor (
/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 Message Processor 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 sẵn (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)
- Lưu ý địa chỉ IP đã phân giải trong lỗi onConnectTimeout và kiểm tra xem địa chỉ IP có hợp lệ cho máy chủ phụ trợ của bạn hay không. Nếu địa chỉ IP 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ì nhiều khả năng là do vấn đề với hoạt động 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 khác, đồng thời xác minh xem bạn có thấy cùng một địa chỉ IP không hợp lệ hay bất kỳ địa chỉ IP không hợp lệ nào khác hay không.
- Tìm trong nhật ký Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) các thông báo có từ khoá DNS Refresh. Kiểm tra xem có địa chỉ IP xấu hoặc không hợp lệ nào đang được thêm 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 máy chủ DNS có thẩm quyền hoặc máy chủ định danh được đị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 quy trình phân giải DNS. Nếu không có máy chủ DNS có thẩm quyền, thì hệ thống sẽ quay lại chế độ thiết lập cấu hình trong/etc/resolv.confvà thực hiện 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 các máy chủ định danh cụ thể, thì những máy chủ định danh đó sẽ được dùng để thực hiện quá trình phân giải DNS. - Nếu có vấn đề với máy chủ DNS có thẩm quyền hoặc máy chủ định danh được chỉ định trong
/etc/resolv.conf, thì tên máy chủ phụ trợ sẽ được phân giải thành địa chỉ IP không hợp lệ. Sau đó, các địa chỉ IP không hợp lệ/xấu sẽ được lưu trữ trong bộ nhớ đệm DNS của Trình xử lý thư.- Nếu vấn đề với máy chủ DNS có thẩm quyền hoặc máy chủ định danh được chỉ định trong
/etc/resolv.confvẫn tiếp diễn, thì các địa chỉ IP không hợp lệ/xấu 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 xấu được lưu trữ trong bộ nhớ đệm DNS của Trình xử lý thông báo, các yêu cầu cho tất cả những API sử dụng máy chủ phụ trợ cụ thể đó sẽ không thành công và trả về lỗi 503. - Nếu vấn đề với máy chủ DNS có thẩm quyền hoặc máy chủ định danh được chỉ định trong
/etc/resolv.confxảy ra không liên tục, thì địa chỉ IP tốt và địa chỉ IP xấu 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ả những API sử dụng máy chủ phụ trợ cụ thể.
- Nếu vấn đề với máy chủ DNS có thẩm quyền hoặc máy chủ định danh được chỉ định trong
- Nếu vấn đề với máy chủ DNS vẫn tiếp diễn, thì bạn sẽ thấy lỗi liên tục. Nếu vấn đề với máy chủ DNS xảy ra không liên tục, thì bạn sẽ thấy lỗi không liên tục. Tức là bất cứ khi nào tên máy chủ 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ủ 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 trao đổi với quản trị viên hệ điều hành và khắc phục các vấn đề với máy chủ DNS.
- Nếu có vấn đề với máy chủ DNS có thẩm quyền hoặc máy chủ định danh được chỉ định trong
/etc/resolv.conf, hãy khắc phục vấn đề bằng máy chủ thích hợp để giải quyết vấn đề này. - Nếu có vấn đề nào về cấu hình trong
/etc/resolv.conftrên các hệ thống có Trình xử lý thông báo, hãy khắc phục vấn đề về cấu hình.
Lỗi kết nối
Lỗi kết nối xảy ra khi Trình xử lý thông báo Apigee Edge cố gắng kết nối với một máy chủ phụ trợ và một trong những vấn đề sau xảy ra:
- Message Processor không thể kết nối trong khoảng thời gian chờ kết nối đặt sẵn. (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ã thông báo của yêu cầu không thành công.
-
Tìm mã nhận dạng thông báo yêu cầu cụ thể trong nhật ký Message Processor (
/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 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 sẵn.
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: Connection refused cho biết máy chủ phụ trợ đã từ chối kết nố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 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 sẵn.
- 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ông báo bằng lệnh
telnethay không:- 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
telnetnhư minh hoạ bên dưới: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 kết nối được với máy chủ phụ trợ, bạn có thể thấy một thông báo như
Connected to backend-server. Nếu bạn không thể kết nối với máy chủ phụ trợ, thì có thể là do địa chỉ IP của Trình xử lý thông báo không được đưa vào danh sách cho phép trên máy chủ phụ trợ cụ thể.
Độ phân giải
Cấp quyền truy cập vào địa chỉ IP của Trình xử lý thông báo trên máy chủ phụ trợ cụ thể để cho phép lưu lượng truy cập từ Trình xử lý thông báo biên 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ông báo trên máy chủ phụ trợ.
Nếu vấn đề vẫn tiếp diễn, hãy phối hợp với Quản trị viên mạng để xác định và khắc phục vấn đề. Nếu bạn cần được Apigee hỗ trợ thêm, 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ủ đích 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ủ đích không chính xác, thì bạn có thể nhận được phản hồi 503 Không có dịch vụ 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 đang diễn ra, 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 đề – Lỗi 503 Dịch vụ không hoạt động với mã lỗi
messaging.adaptors.http.flow.ServiceUnavailable. - Chọn một trong các yêu cầu không thành công.
- Điều hướng qua nhiều giai đoạn của dấu vết và xác định vị trí 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. Trường này có thể cho bạn 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 error.cause trong dấu vết

- Nếu bạn nhận thấy error.cause cho biết Host not reachable (Không thể truy cập vào máy chủ), thì nguyên nhân có thể là một trong những nguyên nhân sau:
- Tên máy chủ được chỉ định trong cấu hình máy chủ đích/điểm cuối đích không chính xác hoặc có khoảng trắng hoặc ký tự đặc biệt không mong muốn.
Ví dụ: có một khoảng trắng không mong muốn trong tên máy chủ như minh hoạ bên dưới:
"demo-target.apigee.net " - Tên máy chủ bị ghi đè bởi biến target.url trong API Proxy bằng cách sử dụng chính sách AssignMessage hoặc JavaScript không chính xác hoặc có dấu cách hoặc 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 máy chủ đích/điểm cuối đích không chính xác hoặc có khoảng trắng hoặc ký tự đặc biệt không mong muốn.
- Kiểm tra cấu hình điểm cuối đích và/hoặc định nghĩa máy chủ đích để xem tên máy chủ đích có không chính xác hay có khoảng trắng hoặc ký tự đặc biệt không mong muốn hay không.
- Nếu máy chủ lưu trữ đích được tạo động, hãy kiểm tra chính sách thích hợp (ví dụ: chính sách AssignMessage/JavaScript) được dùng để tạo máy chủ lưu trữ đó. Kiểm tra xem tên máy chủ đích có không chính xác hay có khoảng trắng hoặc ký tự đặc biệt không mong muốn hay không.
- Sau khi xác định tên máy chủ đích, hãy chạy lệnh
nslookup/digtrên tên máy chủ để xem tên máy chủ đó có phân giải được hay không.Ví dụ: khi chạy lệnh
nslookuptrên tên máy chủ có khoảng trắng không mong muốn, bạn sẽ nhận được kết quả đầu ra 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 hệ điều hành
nslookupcũ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ủ không chính xác được dùng cho máy chủ đích.Chuyển đến phần Độ phân giải.
Nhật ký của trình xử lý thông báo
Cách chẩn đoán bằng nhật ký của trình xử lý thông báo:
- 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 mã nhận dạng thư trong nhật ký Message Processor. (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - Nếu bạn thấy thông báo cảnh báo/lỗi sau, thì Trình xử lý thông báo không thể phân giải tên máy chủ. Vì thông báo sẽ bị tạm ẩn, nên bạn có thể không thấy thông báo cảnh báo này cho tất cả mã nhận dạng thư/yêu cầu.
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
- Sau đó, một thông báo cảnh báo sẽ xuất hiện, trong đó Trình xử lý thư sẽ xoá địa chỉ khỏi bộ nhớ đệm DNS vì không thể truy cập vào máy chủ lưu trữ đí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 một thông báo cho biết Message Processor không thành công với ngoại lệ "Host not reachable" (Không truy cập được vào máy chủ lưu trữ). Đôi khi, tên máy chủ lưu trữ 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ị là null vì không phân giải được hoặc không truy cập được, 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 reachablethườ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 máy chủ đích/điểm cuối đích không chính xác hoặc có khoảng trắng hoặc ký tự đặc biệt không mong muốn.
Ví dụ: có một khoảng trắng 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ởi biến target.url trong API Proxy bằng cách sử dụng chính sách AssignMessage hoặc JavaScript không chính xác hoặc có dấu cách hoặc 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 máy chủ đích/điểm cuối đích không chính xác hoặc có khoảng trắng hoặc ký tự đặc biệt không mong muốn.
- Xác định tên máy chủ đích mà Trình xử lý thông báo đang cố gắng giao tiếp bằng một trong những cách sau:
- Kiểm tra thông báo lỗi chứa
Host not reachablemột cách cẩn thận. - Nếu thông báo lỗi cho biết tên máy chủ lưu trữ, hãy sao chép tên máy chủ lưu trữ đó, 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ị null cho tên máy chủ như trong thông báo lỗi sau,
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ủ bằng cách kiểm tra định nghĩa máy chủ mục tiêu được dùng trong API Proxy không thành công.
- Nếu máy chủ lưu trữ đích được tạo động, hãy kiểm tra chính sách thích hợp (ví dụ: chính sách AssignMessage/JavaScript) được dùng để tạo máy chủ lưu trữ đó.
- Sau khi xác định tên máy chủ đích, hãy chạy lệnh nslookup/dig trên tên máy chủ đó và kiểm tra xem tên máy chủ có phân giải được hay không.
Ví dụ: chạy lệnh nslookup trên tên máy chủ có 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ủ không chính xác được dùng cho máy chủ đích.
Độ phân giải
- Đảm bảo rằng tên máy chủ đích được chỉ định trong cấu hình điểm cuối đích hoặc trong định nghĩa máy chủ đích là chính xác và không có khoảng trắng hoặc ký tự đặc biệt không mong muốn.
- Nếu bạn sử dụng bất kỳ chính sách AssignMessage/JavaScript nào để tạo tên máy chủ đích một cách linh hoạt, hãy điều tra định nghĩa chính sách và mã, đồng thời đảm bảo rằng tên máy chủ đích được tạo chính xác.
Không kết nối được với lớp cổng bảo mật (SSL)
Toàn bộ sổ tay khắc phục sự cố đều dành cho các lỗi bắt tay TLS/SSL. Xem phần Lỗi bắt tay giao thức SSL.
Xác định nguồn gốc của vấn đề
Một số loại lỗi có thể xảy ra trên kết nối đến (hướng bắc) hoặc đi (hướng nam). Đã xảy ra lỗi đầu vào (hướng bắc) giữa ứng dụng khách và Edge. Đã xảy ra lỗi đi (hướng nam) giữa Edge và máy chủ đích phụ trợ. Để chẩn đoán những loại vấn đề này, việc đầu tiên bạn cần làm là tìm hiểu xem lỗi xảy ra trên kết nối hướng bắc hay hướng nam.
Tìm hiểu về các kết nối hướng bắc và hướng nam
Trong Edge, bạn có thể gặp lỗi 503 Service Unavailable (Dịch vụ không hoạt động) trên cả kết nối đến và đi:
- Kết nối đến (hoặc kết nối hướng bắc) – Kết nối giữa ứng dụng máy khách và Bộ định tuyến biên. 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 Trình xử lý thông báo Edge và máy chủ phụ trợ. Message Processor là một thành phần của Apigee Edge, đóng vai trò là proxy cho các yêu cầu API đến các máy chủ đích phụ trợ.
Nếu là người dùng Edge Public Cloud, có lẽ bạn không biết đến các thành phần nội bộ như Bộ định tuyến hoặc Trình xử lý thông báo. Người dùng Đám mây công khai không thể thấy hoặc truy cập vào các thành phần nội bộ này. Nếu có thể, chúng tôi sẽ cung cấp các cách khác để điều tra vấn đề mà không cầ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 theo hướng bắc và hướng nam cho Apigee Edge.

Xác định vị trí xảy ra lỗi 503 Không có dịch vụ
Hãy sử dụng một trong các quy trình sau để xác định xem lỗi 503 Service Unavailable (Dịch vụ không hoạt động) có xảy ra ở kết nối chiều đi hay chiều về hay không.
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 UI Trace:
- Nếu vấn đề vẫn tiếp diễn, hãy bật dấu vết 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 Unavailable xảy ra trong luồng yêu cầu mục tiêu hoặc do máy chủ phụ trợ gửi, thì vấn đề là southbound (tức là giữa Trình xử lý thông báo và máy chủ phụ trợ).
- Nếu bạn không nhận được dấu vết cho lệnh gọi API cụ thể, thì vấn đề nằm ở hướng bắc, giữa ứng dụng khách và Bộ định tuyến.
Giám sát API
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ụ: bạn có thể muốn thiết lập một cảnh báo để nhận được 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 UI Trace:
Nếu vấn đề đã xảy ra trước đây hoặc nếu vấn đề xảy ra không liên tục và bạn không thể ghi lại dấu vết, hãy 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 xem có Lỗi 503 nào cho một proxy API cụ thể hay 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 thời điểm cụ thể, thì vấn đề đã xảy ra ở kết nối hướng nam (giữa Trình xử lý thông báo và máy chủ phụ trợ).
- Nếu không, thì vấn đề xảy ra ở kết nối northbound (giữa ứng dụng khách và Bộ định tuyến).