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

Hãy xem video sau để tìm hiểu thêm về cách giải quyết Lỗi 503 không có dịch vụ.

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

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 kèm theo thông báo Dịch vụ không hoạt động.

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à ví dụ. Trong một số trường hợp, có thể bạn chỉ nhận được mã phản hồi lỗi mà không nhận được thông báo lỗi nào. Định dạng, 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 thể xử lý các yêu cầu được gửi đế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ì.

Nguyên nhân có thể khiến phản hồi 503 Service Không khả dụng 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ố
Máy chủ quá tải Máy chủ phụ trợ bị quá tải hoặc vượt quá dung lượng và không thể xử lý bất kỳ yêu cầu mới nào từ ứng dụng được gửi đến. Người dùng Edge Public và Private Cloud
Máy chủ đang được bảo trì Máy chủ phụ trợ có thể đang được bảo trì tạm thời. Người dùng Edge Public và Private Cloud

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

Trong Apigee Edge, Lỗi không có dịch vụ 503 có thể được trả về từ máy chủ phụ trợ 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 do bảo trì.

Chẩn đoán

Để chẩn đoán lỗi, bạn có thể sử dụng một trong ba 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 vấn đề – 503 Service Không khả dụ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 trong quá trình theo dõi và xác định vị trí xảy ra lỗi.
  4. Nếu bạn nhận thấy lỗi 503 được máy chủ mục tiêu trả về dưới dạng phản hồi, thì nguyên nhân gây ra lỗi 503 là do máy chủ mục tiêu.

    Dưới đây là ảnh chụp màn hình theo dõi mẫu cho thấy phản hồi 503 Service Không khả dụng 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 rồi xem các phần Tiêu đề phản hồi và Nội dung phản hồi để xem 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 phản hồi lỗi được gửi từ đâu.
    • 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 xảy ra từ máy chủ đích bằng cách kiểm tra giá trị của X-Apigee-fault-sourceX-Apigee-fault-code trong Giai đoạn AX (Đã ghi dữ liệu phân tích) 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 (Dữ liệu phân tích được ghi lại) như trong ảnh chụp màn hình bên dưới:
    2. Di chuyển xuống segment Details (Thông tin chi tiết về giai đoạn) đến mục Response Headers (Tiêu đề phản hồi) rồi xác định giá trị của X-Apigee-fault-codeX-Apigee-fault-source như minh hoạ bên dưới:
    3. Nếu giá trị của X-Apigee-fault-sourceX-Apigee-fault-code khớp với các giá trị hiển thị trong bảng bên dưới, thì bạn có thể xác nhận rằng lỗi 503 đế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à máy chủ mục tiêu/điểm cuối mục tiêu có đang gọi một proxy khác trong Apigee hay không. Cách xác định điều này:
    1. Quay lại giai đoạn Request sent to target server (Yêu cầu gửi đến máy chủ đích) rồi nhấp vào nút Show Curl (Hiện Curl) rồi xác định bí danh của máy chủ lưu trữ mục tiêu.
    2. Nếu bí danh của máy chủ lưu trữ đích đang trỏ đến một bí danh của 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 theo chuỗi cho đến khi xác định được nguyên nhân thực sự gây ra lỗi 503 ServiceAvailable (Không có dịch vụ). Trong những trường hợp như vậy, lỗi 503 Service Không khả dụng có thể xảy ra trong các proxy theo chuỗi khác ở các giai đoạn khác. Bạn cũng có thể chẩn đoán lỗi này bằng cẩm nang này.
    3. Nếu bí danh của máy chủ lưu trữ đích trỏ đến máy chủ phụ trợ của bạn, hãy chuyển đến phần Resolution (Độ phân giải).

Nhật ký truy cập NGINX

Bạn cũng có thể tham khảo nhật ký màn hình 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 đề này đã xảy ra trong quá khứ hoặc nếu vấn đề xảy ra 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 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 bất kỳ yêu cầu nào vẫn không thành công với 503.
  3. Nếu có bất kỳ Lỗi 503 nào, hãy kiểm tra xem lỗi đó có phải đế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 các giá trị hiển thị trong bảng bên dưới, thì lỗi 503 sẽ xuất phát 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ủ đí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 mục tiêu không gọi một proxy khác trong Apigee. Nếu đang sử dụng 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 được nguyên nhân thực sự gây ra lỗi 503 Service Không có sẵn. Trong những trường hợp như vậy, lỗi 503 Service Không khả dụng cũng có thể xảy ra trong các proxy theo chuỗi khác ở các giai đoạn khác. Bạn có thể chẩn đoán vấn đề này 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 xảy ra từ máy chủ phụ trợ, hãy chuyển đến phần Resolution (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ợ để xác minh rằng nhận được phản hồi 503 Service Không khả dụng như đã nhận được khi yêu cầu được gửi qua Apigee Edge.

  1. Đảm bảo rằng bạn có tất cả tiêu đề, tham số truy vấn và mọi thông tin xác thực bắt buộc cần được chuyể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ể 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ợ.
  3. Nếu chỉ có Bộ xử lý thông báo mới có thể truy cập vào máy chủ phụ trợ, thì 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 API máy chủ phụ trợ trực tiếp từ Bộ xử lý thông báo.
  4. Xác minh rằng dịch vụ phụ trợ thực sự đang trả về lỗi Không có dịch vụ 503.

Độ phân giải

Nếu chắc chắn rằng lỗi 503 xuất phát từ máy chủ phụ trợ, thì 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 chế độ 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 giú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ư các nguồn liên quan, 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.

Tìm hiểu 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ụ: có thể bạn muốn thiết lập một cảnh báo để nhận thông báo khi số lượng lỗi Messaging.adaperator.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 sau khi 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ợ API.

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 ServiceAvailable (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 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:

  • Hoàn tất thông báo lỗi được quan sát thấy đối với 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 phải 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 ServiceAvailable (Không có 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ông báo.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Khoảng thời gian có thông tin múi giờ khi lỗi 503 xảy ra.