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.
Chuyển đến Tài liệu về Apigee X.
thông tin

Video

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

Video Mô tả
Lỗi máy chủ phụ trợ không hoạt động 503 Tìm hiểu về những điều sau:
  • Giới thiệu về lỗi không hoạt động dịch vụ 503 trong Apigee Edge
  • Khắc phục sự cố và giải quyết Dịch vụ 503 theo thời gian thực Không có sẵn từ Máy chủ phụ trợ

Triệu chứng

Ứng dụng nhận được trạng thái phản hồi HTTP 503 kèm theo thông báo Dịch vụ không có sẵn sau đây lệnh gọi proxy API.

Thông báo lỗi

Bạn có thể thấy một trong các 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 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 ở trên chỉ là các 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 nào. Định dạng và nội dung của mã phản hồi lỗi cũng như thông báo lỗi có thể khác nhau tuỳ thuộc vào việc 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 thể xử lý thư đến yêu cầu. 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ì.

Nguyên nhân có thể dẫn đến phản hồi 503 Service Available là:

Nguyên nhân Nội dung mô tả 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á khả năng và không thể xử lý bất kỳ máy chủ mới nào các yêu cầu đến từ khách hàng. Người dùng Edge công khai và riêng tư
Máy chủ đang được bảo trì Máy chủ phụ trợ có thể đang trong thời gian bảo trì. Người dùng Edge công khai và riêng tư

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

Trong Apigee Edge, máy chủ phụ trợ có thể trả về lỗi 503 Service Available Error (Lỗi 503 không có sẵn dịch vụ) trong một trong các 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ợ ngừng hoạt động trong thời gian tạm thời để 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 pháp sau:

  • Công cụ theo dõi
  • Nhật ký truy cập NGINX
  • Lệnh 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 pháp.

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

    Dưới đây là ảnh chụp màn hình về dấu vết mẫu, trong đó cho thấy phản hồi 503 Service Available (Không nhận được dịch vụ) đã nhận được từ máy chủ đích:

  5. Nhấp vào giai đoạn Phản hồi nhận được từ máy chủ mục tiêu và trải qua Tiêu đề phản hồi và các phần 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ông tin bổ sung 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 đế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 AX (Dữ liệu Analytics đã ghi lại) Giai đoạn trong quá trình theo dõi bằng cách làm theo các bước dưới đây:
    1. Nhấp vào Giai đoạn AX (Analytics Data Recorded) như trong ảnh chụp màn hình ở bên dưới:
    2. Di chuyển xuống phần Thông tin chi tiết về giai đoạn đến phần Tiêu đề phản hồi rồi xác định các giá trị về X-Apigee-fault-codeX-Apigee-fault-source như sau:
    3. Nếu các giá trị của X-Apigee-fault-sourceX-Apigee-fault-code khớp với các giá trị như trong bảng bên dưới, 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 chuỗi proxy hay không, tức là liệu máy chủ mục tiêu/điểm cuối đích có phải là gọi một proxy khác trong Apigee. Cách xác định điều này:
    1. Quay lại giai đoạn Yêu cầu đã gửi đến máy chủ mục tiêu và nhấp vào nút Show Curl (Hiển thị Curl) và xác định bí danh máy chủ lưu trữ của máy chủ mục tiêu.
    2. Nếu bí danh máy chủ lưu trữ của máy chủ mục tiêu đang trỏ tới bí danh máy chủ lưu trữ ảo, thì đó tạo chuỗi proxy. Trong trường hợp này, bạn cần phải lặp lại tất cả các bước trên cho chuỗi cho đến khi bạn xác định được nguyên nhân thực sự gây ra lỗi 503 Service Available. Trong những trường hợp này, dịch vụ 503 Không có sẵn có thể xảy ra trong các proxy theo chuỗi khác tại các giai đoạn có thể được chẩn đoán bằng cách sử dụng cẩm nang này.
    3. Nếu bí danh máy chủ lưu trữ của máy chủ mục tiêu trỏ đến máy chủ phụ trợ của bạn, hãy truy cập Độ phân giải.

Nhật ký truy cập NGINX

Bạn cũng có thể tham khảo nhật ký công cụ NGINX để xác định xem mã trạng thái 503 đã được gửi hay chưa bởi máy chủ phụ trợ. Điều này đặc biệt hữu ích nếu vấn đề đã xảy ra trong quá khứ hoặc nếu sự cố không liên tục và bạn không thể theo dõ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 Lỗi 503 bất kỳ cho proxy API cụ thể trong một khoảng thời gian cụ thể (nếu sự cố đã xảy ra trong quá khứ) hoặc với 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ó lỗi 503 nào đó, hãy kiểm tra xem lỗi đó có đến từ máy chủ phụ trợ hay không. Nếu giá trị của X-Apigee-fault-sourceX-Apigee-fault-code khớp với giá trị được hiển thị trong bảng bên dưới, lỗi 503 đến từ máy chủ phụ trợ:
    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ục mẫu cho thấy lỗi 503 do máy chủ mục tiêu gây ra:

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

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

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

  1. Hãy đả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ợ như một phần của 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ỳ Ứng dụng REST nào khác rồi trực tiếp gọi 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 curl, Postman hoặc bất kỳ Ứng dụng REST nào khác và trực tiếp gọi API máy chủ phụ trợ xử lý tin nhắn.
  4. Xác minh rằng dịch vụ phụ trợ thực sự đang trả về lỗi 503 Service Available (Không có sẵn dịch vụ).

Độ phân giải

Nếu chắc chắn rằng lỗi 503 đến từ máy chủ phụ trợ, bạn có thể thực hiện sau đây để giải quyết vấn đề:

  • Nếu vấn đề là do máy chủ phụ trợ đang ngừng hoạt động để bảo trì, bạn có thể cho phép máy chủ phụ trợ kết nối mạng sau thời gian bảo trì.
  • Nếu vấn đề là do máy chủ phụ trợ bị quá tải, thì khắc phục sự cố 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 làm việc với nhóm máy chủ phụ trợ để khắc phục vấn đề.

Chẩn đoán sự cố bằng tính năng Giám sát API

Tính năng Giám sát API giúp bạn tách biệt các lĩnh vực có vấn đề một cách nhanh chóng để chẩn đoán lỗi, hiệu suất, và độ trễ cũng như nguồn của chúng, 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 các bước trong mẫu tình huống 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 có thể muốn thiết lập cảnh báo để được thông báo khi số điện thoại của 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 sự cố vẫn tiếp diễn ngay cả sau khi đã làm theo các hướng dẫn trên, vui lòng thu thập sau đây là thông tin chẩn đoán, rồi liên hệ với Hỗ trợ Apigee.

Nếu bạn là người dùng đám mây công khai, hãy cung cấp các 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 có lỗi 503 Service Existing (Không có sẵn 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 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 các thông tin sau:

  • Đã nhận thấy thông báo lỗi hoàn chỉnh đối với các yêu cầu không thực hiện được.
  • Tổ chức, Tên môi trường và Tên proxy API mà bạn đang quan sát lỗi 503.
  • Gói proxy API.
  • Tệp theo dõi chứa các yêu cầu gặp lỗi 503 Service Existing (Không có sẵn dịch vụ).
  • 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ý thư.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Khoảng thời gian kèm theo thông tin múi giờ khi xảy ra lỗi 503.