Lỗi máy chủ nội bộ 500 - 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

Video Nội dung mô tả
Lỗi máy chủ nội bộ 500 – do phần phụ trợ gây ra Minh hoạ 500 Internal Server Error theo thời gian thực do máy chủ phụ trợ gây ra cùng với các bước khắc phục sự cố và giải quyết lỗi.

Triệu chứng

Ứng dụng khách nhận được mã trạng thái HTTP của 500 kèm theo thông báo Internal Server Error dưới dạng phản hồi cho lệnh gọi API.

Mã trạng thái HTTP 500 là một phản hồi lỗi chung. Điều này có nghĩa là máy chủ đã gặp phải một tình trạng không mong muốn khiến máy chủ không hoàn thành được yêu cầu. Máy chủ thường trả về lỗi này khi không có mã lỗi nào khác phù hợp.

Thông báo lỗi

Ứng dụng khách nhận được mã phản hồi sau đây:

HTTP/1.1 500 Internal Server Error

Ngoài ra, bạn có thể thấy một thông báo lỗi tương tự như thông báo dưới đây:

Mẫu số 1

Phản hồi mẫu 1 của máy chủ phụ trợ

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

Mẫu số 2

Phản hồi mẫu 2 của máy chủ phụ trợ

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Error>
         <code>500</code>
         <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
      </Error>
   </Body>
</Envelope>

Các nguyên nhân có thể

Máy chủ phụ trợ có thể trả về 500 Internal Server Error do một số nguyên nhân. Cẩm nang này giải thích cách khắc phục sự cố bằng các bước phổ biến và giải quyết lỗi này bất kể nguyên nhân là gì.

Các nguyên nhân có thể dẫn đến vấn đề này như sau:

Nguyên nhân Nội dung mô tả Hướng dẫn khắc phục sự cố áp dụng cho
Lỗi trong máy chủ phụ trợ Có thể máy chủ phụ trợ gặp sự cố vì lý do nào đó. Người dùng Edge về dịch vụ đám mây riêng tư và công khai

Các bước chẩn đoán phổ biến

Hãy sử dụng một trong các công cụ/kỹ thuật sau để chẩn đoán lỗi này:

Giám sát API

Quy trình số 1: Sử dụng tính năng giám sát API

Cách chẩn đoán lỗi bằng tính năng Giám sát API:

  1. Đăng nhập vào giao diện người dùng Apigee Edge với tư cách là một người dùng có vai trò thích hợp.
  2. Chuyển sang tổ chức mà bạn muốn điều tra vấn đề.

  3. Chuyển đến trang Phân tích > Giám sát API > Điều tra.
  4. Chọn khung thời gian cụ thể mà bạn quan sát thấy lỗi.
  5. Vẽ Mã lỗi dựa trên Thời gian.

  6. Chọn một ô có mã lỗi messaging.adaptors.http.flow.ErrorResponseCode như minh hoạ dưới đây:

    ( xem hình ảnh lớn hơn)

  7. Thông tin về mã lỗi messaging.adaptors.http.flow.ErrorResponseCode hiển thị như sau:

    ( xem hình ảnh lớn hơn)

  8. Nhấp vào Xem nhật ký rồi mở rộng hàng cho yêu cầu không thành công.

    ( xem hình ảnh lớn hơn)

  9. Trong cửa sổ Logs (Nhật ký), hãy lưu ý những thông tin sau:
    • Yêu cầu mã nhận dạng thông báo
    • Mã trạng thái: 500
    • Nguồn lỗi: target
    • Mã lỗi: messaging.adaptors.http.flow.ErrorResponseCode

Trace

Quy trình số 2: Sử dụng công cụ Theo dõi

Cách chẩn đoán lỗi bằng công cụ Theo dõi:

  1. Bật tính năng phiên theo dõi
    • Chờ lỗi 500 Internal Server Error với mã lỗi messaging.adaptors.http.flow.ErrorResponseCode xảy ra, hoặc
    • Nếu bạn có thể tái hiện vấn đề, hãy thực hiện lệnh gọi API để tái hiện vấn đề đó 500 Internal Server Error
  2. Đảm bảo bạn đã bật tuỳ chọn Show all FlowInfos (Hiện tất cả thông tin luồng):

  3. 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.
  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. Bạn sẽ thấy lỗi này thường xảy ra trong một luồng sau giai đoạn Phản hồi nhận được từ máy chủ mục tiêu như minh hoạ dưới đây:

    ( xem hình ảnh lớn hơn)

  6. Chuyển đến Giai đoạn AX (Dữ liệu phân tích đã ghi lại) trong dấu vết rồi nhấp vào đó.
  7. Di chuyển xuống mục Tiêu đề phản hồi thông tin chi tiết về giai đoạn rồi xác định giá trị của X-Apigee-fault-codeX-Apigee-fault-sourceX-Apigee-Message-ID như minh hoạ dưới đây:

    ( xem hình ảnh lớn hơn)

  8. Hãy lưu ý giá trị của X-Apigee-fault-code, X-Apigee-fault-sourceX-Apigee-Message-ID:
  9. Tiêu đề phản hồi Giá trị
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

Quy trình 3: Sử dụng nhật ký truy cập NGINX

Cách chẩn đoán lỗi bằng nhật ký truy cập NGINX:

  1. Nếu là người dùng Đám mây riêng tư, bạn có thể dùng nhật ký truy cập NGINX để xác định thông tin chính về HTTP 500 Internal Server Error.
  2. Kiểm tra nhật ký truy cập NGINX:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. Tìm kiếm xem có lỗi 500 nào với mã lỗi messaging.adaptors.http.flow.ErrorResponseCode trong một khoảng thời gian cụ thể hay không (nếu vấn đề này xảy ra trong quá khứ) hoặc có yêu cầu nào vẫn không thành công với 500 hay không.
  4. Nếu bạn tìm thấy bất kỳ lỗi 500 nào trong đó X-Apigee-fault-code khớp giá trị của X-Apigee-fault-code , thì hãy xác định giá trị của X-Apigee-fault-code

    Ví dụ về lỗi 500 trong nhật ký truy cập NGINX:

    ( xem hình ảnh lớn hơn)

    Mục mẫu ở trên từ nhật ký truy cập NGINX có các giá trị sau cho X-Apigee-fault-code X-Apigee-fault-code

    Tiêu đề Giá trị
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

Nguyên nhân: Lỗi máy chủ phụ trợ

Chẩn đoán

Có một số lý do khiến 500 Internal Server Error được máy chủ phụ trợ phản hồi. Bạn cần phải chẩn đoán từng trường hợp một cách độc lập.

  1. Xác định Mã lỗi, Nguồn lỗi cho lỗi phát hiện được bằng tính năng Giám sát API, Công cụ theo dõi hoặc nhật ký truy cập NGINX như giải thích trong phần Các bước chẩn đoán thường gặp.
  2. Nếu Nguồn lỗitargetMã lỗimessaging.adaptors.http.flow.ErrorResponseCode, thì tức là máy chủ phụ trợ trả về lỗi.
  3. Bạn có thể sử dụng một trong các bước sau để chẩn đoán nguyên nhân của vấn đề:

    Trace

    Sử dụng Dấu vết:

    Nếu bạn có phiên Theo dõi cho lỗi này, hãy thực hiện các bước sau:

    1. Trong Dấu vết, hãy chọn yêu cầu API không thành công bằng 500 Internal Server Error.
    2. Chọn giai đoạn Phản hồi nhận được từ máy chủ mục tiêu từ yêu cầu API không thành công như trong hình dưới đây:

      ( xem hình ảnh lớn hơn)

    3. Di chuyển xuống phần Thông tin chi tiết về giai đoạn rồi kiểm tra Nội dung phản hồi,trong đó có chứa phản hồi từ máy chủ phụ trợ.

      Nội dung phản hồi mẫu:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>
      

      Trong phản hồi trên, xin lưu ý rằng thông báo lỗi từ máy chủ phụ trợ là Không được uỷ quyền. Điều này cho biết rằng có thể người dùng đã chuyển thông tin đăng nhập không hợp lệ. Đó là lý do họ gặp lỗi này.

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

    Gọi trực tiếp đế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 thực xem bạn có nhận được cùng một phản hồi 500 Internal Server Error như đã nhận được khi yêu cầu được thực hiện qua Apigee Edge hay không
    • Kiểm tra thông báo lỗi (phản hồi) nhận được từ máy chủ phụ trợ

    Thực hiện các bước sau để thực hiện lệnh gọi trực tiếp đến máy chủ phụ trợ:

    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, thì 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ó thể truy cập máy chủ phụ trợ qua Bộ xử lý thông báo, thì 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 API máy chủ phụ trợ ngay từ Bộ xử lý thông báo.

    4. Xác thực xem dịch vụ phụ trợ có thực sự đang trả về 500 Internal Server Error hay không, đồng thời kiểm tra thông báo lỗi (phản hồi) do máy chủ phụ trợ trả về và xác định nguyên nhân của lỗi này.

    Nhật ký máy chủ phụ trợ

    Sử dụng nhật ký máy chủ phụ trợ

    1. Xem lại nhật ký máy chủ phụ trợ và cố gắng biết thêm thông tin chi tiết về lỗi và nguyên nhân gây ra lỗi.
    2. Nếu có thể, hãy bật chế độ gỡ lỗi trên máy chủ phụ trợ để biết thêm thông tin chi tiết về lỗi và nguyên nhân.
  4. Hãy kiểm tra xem bạn có đang sử dụng chuỗi proxy tại điểm cuối mục tiêu cụ thể của Proxy API không thành công hay không; tức là liệu 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 Edge hay không. Cách xác định điều này:

    1. Nếu bạn có dấu vết của yêu cầu không thành công, hãy chuyển đến giai đoạn Request send to target server (Yêu cầu gửi đến máy chủ mục tiêu) rồi nhấp vào Show Curl (Hiện Curl).

    2. Cửa sổ Curl for Request Sent to Target Server (Curl for Request Sent to Target Server) sẽ mở ra để bạn có thể xác định bí danh của máy chủ lưu trữ đích.
    3. Xem lại điểm cuối đích của Proxy API và kiểm tra xem URL máy chủ phụ trợ hoặc tên máy chủ lưu trữ trong máy chủ đích có trỏ đến một Proxy khác hay máy chủ phụ trợ của riêng bạn hay không.
    4. Nếu bí danh của máy chủ đí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 500 Internal Server Error. Trong những trường hợp như vậy, 500 Internal Server Error 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 và giải quyết vấn đề này bằng cách làm theo hướng dẫn trong cẩm nang này hoặc trong cẩm nang Lỗi máy chủ nội bộ 500.
    5. 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).

Độ phân giải

Nếu chắc chắn rằng lỗi 500 bắt nguồn từ máy chủ phụ trợ, hãy làm việc với nhóm máy chủ phụ trợ của bạn để khắc phục vấn đề một cách phù hợp.

Trong ví dụ thảo luận ở trên, bạn có thể phải yêu cầu người dùng chuyển thông tin xác thực hợp lệ để khắc phục vấn đề này.

Các điểm chính cần lưu ý

  1. Bạn chỉ có thể xem thông báo lỗi thực tế mà máy chủ phụ trợ trả về cho 500 Internal Server Error nếu bạn đã ghi lại phiên theo dõi của các yêu cầu không thành công.
  2. Phản hồi của máy chủ phụ trợ sẽ không được ghi trong nhật ký Giám sát API, Nhật ký truy cập NGINX hoặc nhật ký Trình xử lý thông báo vì lý do bảo mật.
  3. Bạn có thể xem nhật ký máy chủ phụ trợ hoặc bật chế độ gỡ lỗi trên phần phụ trợ để biết thêm thông tin chi tiết về 500 Internal Server Error và/hoặc xem thông báo lỗi do máy chủ phụ trợ trả về.

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, hãy thu thập thông tin chẩn đoán sau đây và liên hệ với Bộ phận hỗ trợ Apigee.

Nếu bạn là người dùng Public Cloud, 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 500
  • Tệp theo dõi chứa các yêu cầu có 500 Internal Server Error
  • Nếu lỗi 500 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 500 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:

  • Đã phát hiệ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à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 500
  • Gói proxy API
  • Tệp theo dõi chứa các yêu cầu có 500 Internal Server Error
  • Nhật ký truy cập NGINX /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Trong đó: ORG, ENVPORT# sẽ được thay bằng giá trị thực tế.

  • Nhật ký hệ thống của Bộ xử lý thư /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Khoảng thời gian có thông tin múi giờ khi xảy ra lỗi 500.