503 Dịch vụ không hoạt động

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 Nội dung mô tả
Khắc phục sự cố và giải quyết lỗi không có dịch vụ 503 do sự cố DNS Tìm hiểu về những nội dung sau:
  • 503 Lỗi không có dịch vụ gây ra do quá trình phân giải của DNS và các vấn đề liên quan đến mạng trong Apigee Edge
  • Khắc phục sự cố và giải quyết lỗi Không có dịch vụ 503 theo thời gian thực do sự cố phân giải DNS
Khắc phục và giải quyết lỗi không có dịch vụ 503 do sự cố mạng Khắc phục và giải quyết lỗi Không có dịch vụ 503 theo thời gian thực do vấn đề về mạng trong Apigee Edge

Triệu chứng

Sau một lệnh gọi proxy API, ứng dụng khách sẽ nhận được trạng thái phản hồi HTTP 503 với thông báo Dịch vụ không hoạt động.

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 None với mã lỗi messaging.adaptors.http.flow.ServiceUnavailable xảy ra nếu Trình xử lý thông báo của Apigee Edge gặp lỗi do hết thời gian kết nối, tên máy chủ không chính xác 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ể khiến phản hồi 503 Service Không khả dụng là:

Nguyên nhân Nội dung mô tả Ai 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ủ mục tiêu khiế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 ngăn ứng dụng 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 và Private Cloud
Lỗi bắt tay SSL Không thể bắt tay TLS/SSL giữa ứng dụng và máy chủ. (Cách 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 và Private Cloud

Các bước chẩn đoán phổ biế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

Công cụ theo dõi

Cách 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:

  1. Nếu vấn đề vẫn tiếp diễn, hãy bật tính năng phiên theo dõi cho API bị ảnh hưởng.
  2. Thực hiện lệnh gọi API và tái tạo vấn đề – Dịch vụ 503 không hoạt động với mã lỗi messaging.adaptors.http.flow.ServiceUnavailable.
  3. Chọn một trong các yêu cầu không thành công.
  4. 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 Chi tiết giai đoạn như minh hoạ trong hình sau.

    Mã thông báo trong phần Chi tiết giai đoạn

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ành công 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ã nhận dạng thông báo cho lỗi 503. Điều này đặc biệt hữu ích nếu vấn đề này đã xảy ra trước đây hoặc nếu vấn đề không liên tục xảy ra 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:

  1. Kiểm tra nhật ký truy cập NGINX: (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log)
  2. Tìm kiếm nếu có Lỗi 503 đối với proxy API cụ thể 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ới lỗi 503.
  3. Nếu có bất kỳ Lỗi 503 nào liên quan đến X-Apigee-fault-code messages.adaperator.http.flow.ServiceAvailable, hãy lưu ý đến mã thông báo của một hoặc nhiều yêu cầu như vậy như trong ví dụ sau:

    Mục nhập mẫu hiển thị Lỗi 503

    Mục nhập mẫu cho thấy mã trạng thái, mã thông báo, nguồn lỗi và mã lỗi

Lỗi kết nối do phân giải DNS không chính xác

Chẩn đoán

  1. Xác định mã nhận dạng của thông báo của yêu cầu không thành công.
  2. 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ể quan sát 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 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)
          
  3. Ghi lại địa chỉ IP đã được phân giải trong lỗi onConnectTimeout và kiểm tra xem địa chỉ IP có hợp lệ đối với 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 bài viết Lỗi kết nối.
  4. Nếu địa chỉ IP không hợp lệ thì rất có thể là do sự cố với quá trình phân giải DNS.
  5. 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 tương tự hoặc có bất kỳ địa chỉ IP nào khác không hợp lệ hay không.
  6. Tìm kiếm trong nhật ký Trình xử lý thư (/opt/apigee/var/log/edge-message-processor/logs/system.log) để tìm các thư có từ khoá DNS Refresh (Làm mới DNS). Thỉnh thoảng, hãy kiểm tra xem địa chỉ IP không hợp lệ hoặc không hợp lệ có đượ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]
          
  7. Vấn đề này có thể xảy ra nếu có bất cứ vấn đề nào với máy chủ DNS đáng tin cậy 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 đáng tin cậy được định cấu hình để phân giải DNS. Nếu không có máy chủ DNS đáng tin cậy, máy chủ sẽ quay lại thiết lập cấu hình trong /etc/resolv.conf và tiến hành phân giải DNS cho phù 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ì các máy chủ định danh đó sẽ được dùng để thực hiện quá trình phân giải DNS.
  8. Nếu xảy ra vấn đề với máy chủ DNS hoặc máy chủ định danh đáng tin cậy được chỉ định trong /etc/resolv.conf, thì tên máy chủ lưu trữ của 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ư.
    1. Nếu sự cố với máy chủ DNS hoặc máy chủ định danh đáng tin cậy được chỉ định trong /etc/resolv.conf vẫn tiếp diễn, thì các địa chỉ IP không hợp lệ/không hợp lệ sẽ vẫn nằm trong bộ nhớ đệm DNS của Bộ 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, việc yêu cầu 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.
    2. Nếu vấn đề với máy chủ DNS hoặc máy chủ định danh đáng tin cậy được chỉ định trong /etc/resolv.conf không liên tục, thì các địa chỉ IP tốt và không tốt 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 đối với tất cả những API đó sử dụng máy chủ phụ trợ cụ thể.
  9. Nếu máy chủ DNS vẫn gặp sự cố, thì 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, thì bạn sẽ thấy lỗi gián đoạn. Tức là bất cứ khi nào tên máy chủ phụ trợ được phân giải thành địa chỉ IP không hợp lệ, 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 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 và khắc phục vấn đề với máy chủ DNS.

  1. Nếu xảy ra vấn đề với máy chủ DNS đáng tin cậy hoặc máy chủ định danh được chỉ định trong /etc/resolv.conf, hãy khắc phục vấn đề với máy chủ thích hợp để giải quyết vấn đề này.
  2. Nếu có bất kỳ vấn đề nào về cấu hình trong /etc/resolv.conf trên những hệ thống có Bộ xử lý thông báo, hãy khắc phục vấn đề cấu hình đó.

Lỗi kết nối

Lỗi kết nối xảy ra khi một 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 sự cố sau xảy ra:

  • Bộ xử lý thư không thể kết nối trong khoảng thời gian chờ kết nối định sẵn. (Mặc định: 3 giây)
  • Máy chủ phụ trợ từ chối kết nối.

Chẩn đoán

  1. Xác định mã nhận dạng của thông báo của yêu cầu không thành công.
  2. Tìm mã nhận dạng 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ể gặp phải các lỗi sau:
    1. 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.
      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)
      
    2. 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]
      
  3. 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 Bộ xử lý thông báo hay không bằng lệnh telnet:
    1. Nếu máy chủ phụ trợ phân giải thành một địa chỉ IP duy nhất, hãy dùng lệnh sau:
      telnet BackendServer-IPaddress 443
                
    2. 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ư đoạn mã bên dưới:
      telnet BackendServer-HostName 443
                
  4. Nếu kết nối được với máy chủ phụ trợ thì 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ì nguyên nhân có thể là do địa chỉ IP của Bộ xử lý thông báo không có trong 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 Edge 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 iptable để 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 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 sự cố. Nếu bạn cần được hỗ trợ thêm từ Apigee, hãy liên hệ với Nhóm hỗ trợ API.

Tên máy chủ lưu trữ 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 là không chính xác, thì bạn có thể nhận được phản hồi 503 Service Không khả dụng 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:

  1. Nếu vấn đề vẫn tiếp diễn, hãy bật tính năng phiên theo dõi cho API bị ảnh hưởng.
  2. Thực hiện lệnh gọi API và tái tạo vấn đề – Dịch vụ 503 không hoạt động với mã lỗi messaging.adaptors.http.flow.ServiceUnavailable.
  3. Chọn một trong các yêu cầu không thành công.
  4. Di chuyển qua các giai đoạn trong quá trình theo dõi và xác định vị trí xảy ra lỗi.
  5. Chọn FlowInfo có lỗi. Bạn có thể tìm thêm thông tin trong trường error.cause trong trường này. Các thông tin 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 hiển thị error.generate trong dấu vết

    Yêu cầu mẫu hiển thị error.generate trong dấu vết
  6. Nếu bạn nhận thấy rằng error.cause hiển thị là error.causethì 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 điểm cuối của máy chủ/đích không chính xác hoặc có khoảng trống không mong muốn hoặc ký tự đặc biệt.

      Ví dụ: có một khoảng trắng không mong muốn trong tên máy chủ như sau:
      "demo-target.apigee.net "
                        
    • Tên máy chủ lưu trữ được ghi đè bằng biến target.url trong Proxy API bằng chính sách AssignMessage hoặc JavaScript là 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.
  7. Hãy 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ủ lưu trữ của máy chủ đích có chính xác hay không hoặc có chứa khoảng trống không mong muốn hoặc ký tự đặc biệt nào không.
  8. Nếu máy chủ lưu trữ đích được tạo một cách linh động, hãy kiểm tra chính sách thích hợp (ví dụ: AssignMessage/JavaScript) dùng để tạo chính sách đó. Kiểm tra xem tên máy chủ lưu trữ mục tiêu có chính xác hay không hoặc có dấu cách hoặc ký tự đặc biệt không mong muốn nào không.
  9. Sau khi bạn xác định tên máy chủ lưu trữ mục tiêu, hãy chạy lệnh nslookup/dig trên tên máy chủ lưu trữ đó để xem có thể phân giải được hay không.

    Ví dụ: việc chạy lệnh nslookup trên tên máy chủ có khoảng trắng 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
    
  10. 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 sự cố này là do tên máy chủ được sử dụng cho máy chủ đích không chính xác.

    Chuyển đến mục Độ phân giải.

Nhật ký trình xử lý thư

Cách chẩn đoán bằng cách sử dụng nhật ký trình xử lý thư:

  1. Xác định mã nhận dạng của thông báo của yêu cầu không thành công.
  2. Tì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)
  3. Nếu bạn thấy thông báo lỗi/cảnh báo sau đây thì Trình xử lý thư không thể phân giải tên máy chủ. Vì thư sẽ bị tạm ngưng 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ã/yêu cầu thông báo.
    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
        
  4. Tiếp theo sẽ là một thông báo cảnh báo, trong đó Bộ xử lý thông báo 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
        
  5. Sau đó, bạn có thể thấy một thông báo trong đó Trình xử lý thông báo gặp lỗi ngoại lệ "Máy chủ không truy cập được". Đôi khi, tên máy chủ 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>
        
  6. Đôi khi, tên máy chủ có thể hiển thị là rỗng vì không phân giải hoặc truy cập được tên máy chủ như 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 {}
    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>
        
  7. 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 của máy chủ/đích không chính xác hoặc có khoảng trống không mong muốn hoặc ký tự đặc biệt.

      Ví dụ: có một khoảng trắng không mong muốn trong tên máy chủ "demo-target.apigee.net " trong thông báo lỗi sau đây:
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • Tên máy chủ lưu trữ được ghi đè bằng biến target.url trong Proxy API bằng chính sách AssignMessage hoặc JavaScript là 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.
  8. Xác định tên máy chủ lưu trữ của máy chủ đích mà Bộ xử lý thông báo đang cố gắng giao tiếp bằng một trong các cách sau:
    1. Kiểm tra kỹ thông báo lỗi có chứa Host not reachable .
    2. Nếu thông báo lỗi hiển thị tên máy chủ, hãy sao chép tên máy chủ, bao gồm cả mọi dấu cách hay ký tự đặc biệt.
    3. 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, thì
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. 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 không thành công.
      2. Nếu máy chủ lưu trữ mục tiêu được tạo một cách linh động, hãy kiểm tra chính sách thích hợp (ví dụ: AssignMessage/JavaScript chính sách) dùng để tạo chính sách đó.
  9. Sau khi bạn đã xác định tên máy chủ lưu trữ mục tiêu, hãy chạy lệnh nslookup/dig trên tên máy chủ lưu trữ đó và kiểm tra xem liệu có giải quyết được tên máy chủ lưu trữ đó 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
          
  10. 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ủ lưu trữ được sử dụng không chính xác cho máy chủ đích.

Độ phân giải

  1. Đảm bảo rằng tên máy chủ lưu trữ của máy chủ đích được chỉ định trong cấu hình điểm cuối mục tiêu hoặc trong định nghĩa máy chủ mục tiêu 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.
  2. Nếu bạn sử dụng bất kỳ assignMessage/JavaScript nào để tự động tạo tên máy chủ lưu trữ máy chủ đích, hãy tìm hiểu định nghĩa và mã của chính sách cũng như đảm bảo rằng tên máy chủ mục tiêu được tạo đúng cách.

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 có thể xảy ra khi kết nối đến (hướng bắc) hoặc đi (hướng nam). Một lỗi đến (hướng bắc) xảy ra giữa ứng dụng khách và Edge. Xảy ra lỗi đi (hướng về) giữa Edge và máy chủ đích phụ trợ. Để chẩn đoán các loại sự cố này, việc đầu tiên của bạn là tìm hiểu xem lỗi xảy ra trên kết nối về hướng bắc hay hướng nam.

Tìm hiểu sự kết nối về hướng bắc và nam

Trong Edge, bạn có thể gặp lỗi 503 Service Không có sẵn trên kết nối đến hoặc đi:

  • Kết nối đến (hoặc 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, giúp xử lý các yêu cầu gửi đến hệ thống.
  • Kết nối đi (hoặc hướng nam) – Kết nối giữa Bộ xử lý thông báo Edge và máy chủ phụ trợ. Trình xử lý tin nhắn là một thành phần của Apigee Edge chuyên gửi 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, bạn có thể chưa biết về các thành phần nội bộ, chẳng hạn như Bộ định tuyến hoặc Bộ xử lý tin nhắn. Người dùng Public Cloud không thể nhìn thấy hoặc truy cập được các thành phần nội bộ này. Nếu có thể, chúng tôi sẽ cung cấp những cách khác để điều tra vấn đề mà 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 mối kết nối theo hướng bắc và nam của Apigee.

Luồng ứng dụng (kết nối hướng bắc) thông qua Edge đến máy chủ phụ trợ (kết nối hướng nam)

Xác định vị trí xảy ra lỗi 503 Service Không có sẵn

Hãy sử dụng một trong các quy trình sau để xác định xem lỗi 503 Service None (Không có dịch vụ) có xảy ra tại kết nối về hướng bắc hay hướng nam 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 cách sử dụng tính năng Theo dõi giao diện người dùng:

  1. Nếu sự cố vẫn còn hoạt động, hãy bật tính năng theo dõi giao diện người dùng cho API bị ảnh hưởng.
  2. Nếu dấu vết giao diện người dùng của yêu cầu API không thành công cho thấy lỗi 503 Service Không khả dụng 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à hướng về phía nam (tức là giữa Bộ xử lý thông báo và máy chủ phụ trợ).
  3. 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 bắc, giữa ứng dụng khách và Bộ định tuyến.

Giám sát API

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 lỗi, các vấn đề về hiệu suất và độ trễ cũng như các vấn đề liên quan đến nguồn gây ra vấn đề, chẳng hạn như các ứ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 tình huống mẫu minh hoạ cách khắc phục sự cố 5xx xảy ra với API bằng tính nă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 cách sử dụng tính năng Theo dõi giao diện người dùng:

Nếu vấn đề đã từng xảy ra trước đây hoặc nếu vấn đề không xuất hiện liên tục và bạn không thể ghi lại dấu vết, hãy làm theo các bước sau:

  1. Kiểm tra nhật ký truy cập NGINX (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log ).
  2. Tìm kiếm nếu có bất kỳ Lỗi 503 nào đối với proxy API cụ thể.
  3. 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ì vấn đề sẽ xảy ra ở kết nối southbound (giữa Bộ xử lý thông báo và máy chủ phụ trợ).
  4. Nếu không thì vấn đề đã xảy ra ở kết nối hướng bắc (giữa ứng dụng và Bộ định tuyến).