503 Dịch vụ không có sẵn – Máy chủ phụ trợ

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

Xem video sau đây để tìm hiểu thêm về cách khắc phục Lỗi 503 Dịch vụ không hoạt động.

Video Mô tả
Lỗi 503 Không có dịch vụ từ máy chủ phụ trợ Tìm hiểu về những nội dung sau:
  • Giới thiệu về lỗi 503 Không có dịch vụ trong Apigee Edge
  • 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 từ Máy chủ phụ trợ

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 một trong những thông báo lỗi sau:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

Bạn cũng có thể thấy một thông báo lỗi như sau trong phản hồi HTTP:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

Lưu ý: Mã phản hồi và thông báo lỗi nêu trên chỉ là ví dụ. Trong một số trường hợp, bạn có thể chỉ nhận được mã phản hồi lỗi mà không có thông báo lỗi. Định dạng và nội dung của mã phản hồi lỗi và thông báo lỗi có thể khác nhau tuỳ thuộc vào cách triển khai máy chủ phụ trợ.

Nguyên nhân

Mã trạng thái HTTP 503 có nghĩa là máy chủ hiện không xử lý được các yêu cầu đến. Thông thường, lỗi này xảy ra do máy chủ quá bận hoặc tạm thời ngừng hoạt động để bảo 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 Nội dung mô tả Những người có thể thực hiện các bước khắc phục sự cố
Máy chủ quá tải Máy chủ phụ trợ bị quá tải hoặc vượt quá công suất và không thể xử lý bất kỳ yêu cầu mới nào của ứng dụng khách. Người dùng Edge Public Cloud và Private Cloud
Máy chủ đang bảo trì Máy chủ phụ trợ có thể đang tạm thời bảo trì. Người dùng Edge Public Cloud và Private Cloud

Nguyên nhân: Máy chủ quá tải/Máy chủ đang bảo trì

Trong Apigee Edge, Lỗi 503 Service Unavailable có thể được trả về từ một máy chủ phụ trợ trong một trong hai trường hợp sau:

  • Máy chủ phụ trợ bị quá tải/bận và không thể xử lý bất kỳ yêu cầu mới nào.
  • Máy chủ phụ trợ tạm thời không hoạt động do đang bảo trì.

Chẩn đoán

Để chẩn đoán lỗi, bạn có thể sử dụng một trong 3 phương thức sau:

  • Công cụ theo dõi
  • Nhật ký truy cập NGINX
  • Gọi trực tiếp đến máy chủ phụ trợ

Nhấp vào các thẻ bên dưới để tìm hiểu về từng phương thức.

Công cụ theo dõi

  1. Bật phiên theo dõi và thực hiện lệnh gọi API để tái hiện vấn đề – Lỗi 503 Dịch vụ không hoạt động.
  2. Chọn một trong các yêu cầu không thực hiện được và kiểm tra dấu vết.
  3. Đ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.
  4. Nếu bạn thấy lỗi 503 được trả về dưới dạng phản hồi từ máy chủ đích, thì nguyên nhân gây ra lỗi 503 là máy chủ đích.

    Sau đây là ảnh chụp màn hình dấu vết mẫu cho thấy phản hồi 503 Service Unavailable (Dịch vụ không hoạt động) nhận được từ máy chủ đích:

  5. Nhấp vào giai đoạn Đã nhận được phản hồi từ máy chủ đích và xem xét các phần Tiêu đề phản hồi và Nội dung phản hồi để xem chúng có thông tin hữu ích nào không:
    • Tiêu đề phản hồi có thể chứa tiêu đề Máy chủ, cho biết nơi gửi phản hồi lỗi.
    • Nội dung phản hồi có thể chứa thêm thông tin về lý do máy chủ đích gửi mã phản hồi 503.
  6. Xác nhận rằng lỗi 503 bắt nguồn từ máy chủ đích bằng cách kiểm tra các giá trị của X-Apigee-fault-sourceX-Apigee-fault-code trong giai đoạn AX (Dữ liệu phân tích được ghi lại) trong dấu vết bằng cách sử dụng các bước bên dưới:
    1. Nhấp vào giai đoạn AX (Đã ghi lại dữ liệu Analytics) như trong ảnh chụp màn hình bên dưới:
    2. Di chuyển xuống phần Chi tiết giai đoạn đến phần Tiêu đề phản hồi và xác định các giá trị của X-Apigee-fault-codeX-Apigee-fault-source như minh hoạ dưới đây:
    3. Nếu các giá trị của X-Apigee-fault-sourceX-Apigee-fault-code khớp với các giá trị xuất hiện trong bảng bên dưới, thì bạn có thể xác nhận rằng lỗi 503 bắt nguồn từ máy chủ đích:
      Tiêu đề phản hồi Giá trị
      X-Apigee-fault-source mục tiêu
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Kiểm tra xem bạn có đang sử dụng tính năng liên kết proxy hay không, tức là liệu máy chủ đích/điểm cuối đích có đang gọi một proxy khác trong Apigee hay không. Cách xác định:
    1. Chuyển về giai đoạn Yêu cầu được gửi đến máy chủ đích, nhấp vào nút Show Curl (Hiện Curl) và xác định bí danh máy chủ đích.
    2. Nếu bí danh máy chủ đích đang trỏ đến một bí danh máy chủ ảo, thì đó là chuỗi proxy. Trong trường hợp này, bạn cần lặp lại tất cả các bước trên cho proxy được liên kết cho đến khi xác định được nguyên nhân thực sự gây ra lỗi 503 Service Unavailable. Trong những trường hợp này, lỗi 503 Service Unavailable (Dịch vụ không hoạt động) cũng có thể xảy ra ở các proxy được liên kết khác ở các giai đoạn khác. Bạn có thể chẩn đoán lỗi này bằng cách sử dụng sổ tay này.
    3. Nếu bí danh máy chủ đích trỏ đến máy chủ phụ trợ của bạn, hãy chuyển đến phần Giải pháp.

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 xem mã trạng thái 503 có được máy chủ phụ trợ gửi hay không. Đ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:

  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 mọi Lỗi 503 cho một 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 cho mọi yêu cầu vẫn gặp lỗi 503.
  3. Nếu có lỗi 503, hãy kiểm tra xem lỗi đó có phải do máy chủ phụ trợ gây ra hay không. Nếu các giá trị của X-Apigee-fault-sourceX-Apigee-fault-code khớp với các giá trị xuất hiện trong bảng bên dưới, thì lỗi 503 là do máy chủ phụ trợ gây ra:
    Tiêu đề phản hồi Giá trị
    X-Apigee-fault-source mục tiêu
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Dưới đây là một mục nhập mẫu cho thấy lỗi 503 do máy chủ đích gây ra:

  4. Xem xét Proxy API cụ thể và đảm bảo rằng bạn đang sử dụng chuỗi proxy, tức là nếu máy chủ đích/điểm cuối đích không gọi một proxy khác trong Apigee. Nếu đang sử dụng tính năng liên kết proxy, bạn cần lặp lại tất cả các bước trên cho proxy được liên kết cho đến khi xác định được nguyên nhân thực sự gây ra lỗi 503 Service Unavailable. Trong những trường hợp này, lỗi 503 Service Unavailable (Dịch vụ không hoạt động) cũng có thể xảy ra ở các proxy được liên kết khác ở các giai đoạn khác. Bạn có thể chẩn đoán bằng cách sử dụng sổ tay này.
  5. Nếu bạn xác nhận rằng bạn không sử dụng tính năng liên kết proxy và lỗi 503 xuất phát từ máy chủ phụ trợ của bạn, hãy chuyển đến phần Giải pháp.

Gọi đến máy chủ phụ trợ

Bạn có thể thực hiện lệnh gọi trực tiếp đến máy chủ phụ trợ và xác minh rằng bạn đang nhận được cùng một phản hồi 503 Service Unavailable (Dịch vụ không hoạt động) như khi yêu cầu được thực hiện thông qua Apigee Edge.

  1. Đảm bảo rằng bạn có tất cả các tiêu đề, tham số truy vấn bắt buộc và mọi thông tin đăng nhập cần được truyền đến máy chủ phụ trợ trong yêu cầu.
  2. Nếu dịch vụ phụ trợ có thể truy cập công khai, bạn có thể sử dụng lệnh curl, Postman hoặc bất kỳ REST Client nào khác và gọi trực tiếp API máy chủ phụ trợ.
  3. Nếu chỉ có thể truy cập vào máy chủ phụ trợ từ Trình xử lý thông báo, bạn có thể sử dụng lệnh curl, Postman hoặc bất kỳ Ứng dụng REST nào khác và gọi trực tiếp API máy chủ phụ trợ từ Trình xử lý thông báo.
  4. Xác minh rằng dịch vụ phụ trợ thực sự trả về lỗi 503 Service Unavailable.

Độ phân giải

Nếu xác định rằng lỗi 503 xuất phát từ máy chủ phụ trợ, bạn có thể làm như sau để giải quyết vấn đề:

  • Nếu vấn đề xảy ra do máy chủ phụ trợ ngừng hoạt động để bảo trì, bạn có thể đưa máy chủ phụ trợ vào trạng thái trực tuyến sau thời gian bảo trì.
  • Nếu vấn đề xảy ra do máy chủ phụ trợ bị quá tải, hãy khắc phục vấn đề nếu bạn có quyền truy cập vào máy chủ phụ trợ. Nếu không, bạn có thể cần phải làm việc với nhóm máy chủ phụ trợ để khắc phục vấn đề này.

Chẩn đoán vấn đề bằng tính năng Giám sát API

Giám sát API cho phép bạn nhanh chóng xác định 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.

Thực hiện theo một kịch bản 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ể thiết lập một cảnh báo để nhận thông báo khi số lượng lỗi messaging.adaptors.http.flow.ErrorResponseCode vượt quá một ngưỡng cụ thể.

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, vui lòng thu thập thông tin chẩn đoán sau đây rồi liên hệ với Nhóm hỗ trợ Apigee.

Nếu bạn là người dùng đám mây công cộng, hãy cung cấp những thông tin sau:

  • Tên tổ chức
  • Tên môi trường
  • Tên Proxy API
  • Hoàn tất lệnh curl để tái tạo lỗi 503
  • Tệp theo dõi chứa các yêu cầu gặp lỗi 503 Không có dịch vụ
  • Nếu lỗi 503 hiện không xảy ra, hãy cung cấp khoảng thời gian kèm theo thông tin về múi giờ khi lỗi 503 xảy ra trong quá khứ.

Nếu bạn là người dùng đám mây riêng tư, hãy cung cấp những thông tin sau:

  • Thông báo lỗi hoàn chỉnh được ghi nhận cho các yêu cầu không thành công.
  • Tổ chức, Tên môi trường và Tên proxy API mà bạn đang gặp lỗi 503.
  • Gói API Proxy.
  • Tệp theo dõi chứa các yêu cầu gặp lỗi 503 Dịch vụ không có sẵn.
  • Nhật ký truy cập NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Nhật ký Trình xử lý tin nhắn.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Khoảng thời gian có thông tin về múi giờ khi lỗi 503 xảy ra.