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 Mô tả
Lỗi máy chủ nội bộ 500 – do phần phụ trợ gây ra Minh hoạ một 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 sẽ nhận được mã trạng thái HTTP 500 kèm theo thông báo Internal Server Error làm 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 tình trạng không mong muốn ngăn cản việc hoàn thành yêu cầu. Lỗi này là thường được máy chủ trả về khi không có mã lỗi nào khác phù hợp.

Thông báo lỗi

Ứng dụng sẽ 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 của máy chủ phụ trợ #1

{"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 của máy chủ phụ trợ #2

<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 số lượng nguyên nhân. Cẩm nang này giải thích cách khắc phục sự cố thông qua các bước phổ biến và cách giải quyết vấn đề này bất kể nguyên nhân là gì.

Sau đây là những nguyên nhân có thể gây ra vấn đề này:

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

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 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à 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 đề này.

  3. Chuyển đến thẻ Analyze (Phân tích) > Giám sát API > Điều tra.
  4. Chọn khung thời gian cụ thể mà bạn phát hiện thấy lỗi.
  5. Vẽ Mã lỗi theo Thời gian.

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

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

  7. Thông tin về mã lỗi messaging.adaptors.http.flow.ErrorResponseCode được hiển thị dưới dạng được hiển thị bên dưới:

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

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

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

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

Trace

Quy trình 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 phiên theo dõi
    • Chờ lỗi 500 Internal Server Error với mã lỗi messaging.adaptors.http.flow.ErrorResponseCode sắp 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 chế độ Show all FlowInfos (Hiện tất cả FlowInfos):

  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 của quá trình theo dõi và xác định nơi xảy ra lỗi.
  5. Bạn thường sẽ thấy lỗi này trong một luồng sau khi Phản hồi nhận được từ máy chủ đích giai đoạn như sau:

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

  6. Chuyển đến Giai đoạn AX (Đã ghi dữ liệu Analytics) trong dấu vết và nhấp vào đó.
  7. Cuộn xuống phần Tiêu đề phản hồi thông tin chi tiết về giai đoạn rồi xác định các 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. Lưu ý các giá trị của X-Apigee-fault-code, X-Apigee-fault-source, và X-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ể sử 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 hay không messaging.adaptors.http.flow.ErrorResponseCode trong một khoảng thời gian cụ thể (nếu sự cố xảy ra trong trước đây) hoặc nếu có bất kỳ yêu cầu nào vẫn không thành công với 500.
  4. Nếu bạn tìm thấy lỗi 500 khi so khớp X-Apigee-fault-code giá trị của messaging.adaptors.http.flow.ErrorResponseCode, sau đó xác định giá trị của X-Apigee-fault-source.

    Lỗi 500 mẫu trong nhật ký truy cập NGINX:

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

    Mục nhập 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

500 Internal Server Error mà máy chủ phụ trợ phản hồi có thể là do một số nguyên nhân gây ra. Bạn cần tự chẩn đoán từng trường hợp.

  1. Xác định Mã lỗi, Nguồn lỗi cho lỗi quan sát được bằng cách sử dụng chức 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 Các bước chẩn đoán phổ biến.
  2. Nếu Nguồn lỗitargetMã lỗimessaging.adaptors.http.flow.ErrorResponseCode, thì điều đó cho biết rằng máy chủ phụ trợ trả về lỗi.
  3. Bạn có thể làm theo một trong các bước sau để chẩn đoán nguyên nhân của vấn đề:

    Trace

    Sử dụng công cụ Theo dõi:

    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 trang Theo dõi, hãy chọn yêu cầu API không thực hiện được 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ừ không thực hiện được yêu cầu API như minh hoạ trong hình dưới đây:

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

    3. Cuộn xuống phần Chi tiết giai đoạn và kiểm tra Nội dung phản hồi,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, lưu ý rằng thông báo lỗi từ máy chủ phụ trợ là Không được phép. Điều này cho thấy rằng người dùng có thể đã vượt qua quy trình không hợp lệ thông tin đăng nhập và đó là lý do họ gặp lỗi này.

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

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

    Hãy 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ả các tiêu đề, tham số truy vấn bắt buộc và bất kỳ thông tin xác thực 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, thì bạn có thể sử dụng curl, Postman hoặc bất kỳ Ứng dụng REST nào khác rồi gọi phương thức máy chủ phụ trợ.
    3. Nếu chỉ có thể truy cập vào máy chủ phụ trợ qua Trình xử lý thông báo, 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 phương thức API máy chủ phụ trợ trực tiếp từ Trình xử lý thư.

    4. Xác thực xem dịch vụ phụ trợ có thực sự trả về 500 Internal Server Error hay không và 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 gây ra 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 nhận thêm thông tin chi tiết về lỗi và là nguyên nhân của nó.
    2. Nếu có thể, hãy bật chế độ gỡ lỗi trên máy chủ phụ trợ để biết thêm chi tiết về lỗi và nguyên nhân.
  4. Kiểm tra xem bạn có đang sử dụng tạo chuỗi proxy trong điểm cuối mục tiêu cụ thể của Proxy API không thành công; tức là nếu máy chủ mục tiêu/điểm cuối mục tiêu gọi một proxy khác trong Lợi ích của Apigee. 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 phần Yêu cầu đã gửi để nhắm mục tiêu máy chủ rồi nhấp vào Show Curl (Hiện Curl).

    2. Cửa sổ Curl for Yêu cầu được gửi tới máy chủ mục tiêu sẽ mở ra tại đây có thể xác định bí danh máy chủ lưu trữ của máy chủ mục tiêu.
    3. Xem lại điểm cuối đích của Proxy API và kiểm tra xem máy chủ phụ trợ có phải là URL hoặc tên máy chủ lưu trữ trong máy chủ mục tiêu trỏ đến một Proxy khác hoặc Proxy của riêng bạn máy chủ phụ trợ.
    4. Nếu bí danh máy chủ lưu trữ của máy chủ mục tiêu đang trỏ đến một bí danh máy chủ lưu trữ ảo, thì bí danh đó là 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 proxy theo chuỗi cho đến khi bạn xác định nguyên nhân thực sự gây ra 500 Internal Server Error. Trong những trường hợp này, 500 Internal Server Error có thể xảy ra trong các proxy chuỗi khác ở các giai đoạn khác cũng có thể được chẩn đoán và đã giải quyết bằng cách làm theo các hướng dẫn trong cẩm nang này hoặc trong Cẩm nang về 500 Lỗi máy chủ nội bộ.
    5. 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.

Độ phân giải

Nếu chắc chắn rằng lỗi 500 xuất phát từ máy chủ phụ trợ, hãy làm việc với nhóm máy chủ phụ trợ để 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 đăng nhập 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ế do máy chủ phụ trợ trả về cho 500 Internal Server Error nếu bạn đã ghi lại phiên theo dõi cho lỗi yêu cầu.
  2. Phản hồi của máy chủ phụ trợ sẽ không được ghi lại trong API Giám sát API, Nhật ký truy cập NGINX, hoặc Nhật ký Trình xử lý thư 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 được trả về bởi máy chủ phụ trợ.

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

Nếu bạn là người dùng Cloud Public, 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 hiện 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 thì hãy cho biết thời gian cùng với thông tin múi giờ khi 500 lỗi 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 500 lỗi
  • 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

    Địa điểm: ORG, ENVPORT# được thay thế bằng giá trị thực tế.

  • Nhật ký hệ thống của 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 500.