500 Lỗi máy chủ nội bộ

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 các video sau để tìm hiểu thêm về cách giải quyết 500 Lỗi máy chủ nội bộ.

Video Mô tả
Giới thiệu Giới thiệu về 500 lỗi máy chủ nội bộ và các nguyên nhân có thể xảy ra. Đồng thời minh hoạ lỗi 500 Máy chủ nội bộ theo thời gian thực cùng với các bước khắc phục sự cố và giải quyết lỗi.
Xử lý lỗi Chú thích dịch vụ và trích xuất biến Minh hoạ 2 lỗi máy chủ nội bộ trong 500 lỗi do chính sách Biến chú thích và trích xuất cho dịch vụ gây ra đồng thời cho biết cách khắc phục cũng như giải quyết các lỗi này.
Xử lý lỗi chính sách JavaScript Hiển thị 500 Lỗi máy chủ nội bộ do chính sách JavaScript gây ra và các bước để khắc phục và giải quyết lỗi này.
Xử lý lỗi do máy chủ phụ trợ gây ra Cho thấy ví dụ về 500 lỗi máy chủ nội bộ do lỗi ở máy chủ phụ trợ và hướng dẫn các bước để 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 cùng với thông báo "Lỗi máy chủ nội bộ" làm phản hồi cho lệnh gọi API. Máy chủ nội bộ 500 lỗi có thể là do lỗi trong quá trình thực thi chính sách bất kỳ trong Edge hoặc do lỗi trên máy chủ đích/máy chủ phụ trợ.

Mã trạng thái HTTP 500 là một phản hồi lỗi chung. Có nghĩa là máy chủ gặp phải điều kiện bất ngờ ngăn cản hoạt động hoàn thành yêu cầu. Lỗi này thường mà 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

Bạn có thể nhận được thông báo lỗi sau:

HTTP/1.1 500 Internal Server Error

Trong một số trường hợp, bạn có thể thấy một thông báo lỗi khác có nhiều thông tin chi tiết hơn. Sau đây là ví dụ thông báo lỗi:

{
   "fault":{
      "detail":{
         "errorcode":"steps.servicecallout.ExecutionFailed"
      },
      "faultstring":"Execution of ServiceCallout callWCSAuthServiceCallout failed. Reason: ResponseCode 400 is treated as error"
   }
}

Nguyên nhân có thể xảy ra

Lỗi 500 máy chủ nội bộ có thể xảy ra do một số nguyên nhân khác nhau. Trong Edge, có thể phân loại các nguyên nhân thành hai loại chính dựa trên vị trí xảy ra lỗi:

Nguyên nhân Chi tiết Chúng tôi cung cấp các bước khắc phục sự cố chi tiết cho
Lỗi thực thi trong chính sách Edge Chính sách trong proxy API có thể không thành công vì lý do nào đó. Người dùng Edge riêng tư và Cloud Cloud
Lỗi trong 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

Lỗi thực thi trong chính sách Edge

Chính sách bên trong proxy API có thể không thành công vì lý do nào đó. Phần này giải thích cách khắc phục sự cố nếu Lỗi máy chủ nội bộ 500 xảy ra trong quá trình thực thi chính sách.

Chẩn đoán

Các bước chẩn đoán cho người dùng đám mây riêng tư và công khai

Nếu bạn có phiên giao diện người dùng theo dõi lỗi, thì:

  1. Xác minh rằng lỗi là do thực thi chính sách. Hãy xem phần Xác định nguồn gốc của vấn đề để biết thông tin chi tiết.
  2. Nếu xảy ra lỗi trong quá trình thực thi chính sách, hãy tiếp tục. Nếu lỗi là do máy chủ phụ trợ, hãy chuyển đến Lỗi trong Máy chủ phụ trợ.
  3. Chọn yêu cầu API không thành công do lỗi máy chủ nội bộ 500 trong dấu vết.
  4. Kiểm tra yêu cầu và chọn chính sách cụ thể không thực hiện được hoặc quy trình có tên "Lỗi" ngay sau chính sách bị lỗi trong dấu vết.
  5. Xem thêm thông tin chi tiết về lỗi bằng cách kiểm tra "lỗi" trong trường Thuộc tính hoặc nội dung Lỗi.
  6. Dựa vào thông tin bạn đã thu thập được về lỗi đó, hãy cố gắng xác định nguyên nhân gây ra lỗi.

Các bước chẩn đoán chỉ dành cho người dùng trên đám mây riêng tư

Nếu bạn không có phiên giao diện người dùng theo dõi, thì:

  1. Xác minh rằng đã xảy ra lỗi trong quá trình thực thi chính sách. Hãy xem phần Xác định nguồn gốc của vấn đề để biết thông tin chi tiết.
  2. Nếu lỗi phát sinh từ việc thực thi chính sách, hãy tiếp tục. Nếu xảy ra lỗi trong khi thực hiện chính sách thực thi, tiếp tục. Nếu lỗi do máy chủ phụ trợ gây ra, hãy xem bài viết Lỗi trong Máy chủ phụ trợ.
  3. Sử dụng nhật ký truy cập NGINX như giải thích trong Xác định nguồn gốc của sự cố để xác định lỗi chính sách không thành công trong proxy API cũng như mã nhận dạng duy nhất của tin nhắn yêu cầu
  4. Kiểm tra nhật ký Trình xử lý thư (/opt/apigee/var/log/edge-message-processor/logs/system.log) và tìm kiếm mã nhận dạng thông báo yêu cầu duy nhất trong đó.
  5. Nếu bạn tìm thấy mã nhận dạng duy nhất của thông báo yêu cầu, hãy tìm hiểu xem bạn có thể tìm hiểu thêm thông tin về mã nhận dạng duy nhất của thông báo gây ra lỗi.

Độ phân giải

Nếu bạn đã xác định được nguyên nhân của vấn đề với chính sách, hãy thử khắc phục vấn đề bằng cách sửa chính sách và triển khai lại proxy.

Các ví dụ sau đây minh hoạ cách xác định nguyên nhân và giải pháp cho các lỗi vi phạm các loại vấn đề khác nhau.

Nếu bạn cần hỗ trợ thêm để khắc phục sự cố 500 Lỗi máy chủ nội bộ hoặc nghi ngờ đó là một vấn đề trong Edge, hãy liên hệ với Apigee Hỗ trợ.

Ví dụ 1: Lỗi trong chính sách Chú thích dịch vụ do lỗi trong phần phụ trợ máy chủ

Nếu lệnh gọi đến máy chủ phụ trợ không thành công theo Chính sách chú thích dịch vụ và gặp bất kỳ lỗi nào như là 4XX hoặc 5XX thì sẽ được coi là Lỗi máy chủ nội bộ 500.

  1. Dưới đây là ví dụ về trường hợp dịch vụ phụ trợ gặp lỗi 404 trong Dịch vụ Chính sách về chú thích. Thông báo lỗi sau đây được gửi đến người dùng cuối:
    {
    "fault":
         { "detail":
               { "errorcode":"steps.servicecallout.ExecutionFailed"
               },"faultstring":"Execution of ServiceCallout service_callout_v3_store_by_lat_lon
     failed. Reason: ResponseCode 404 is treated as error"
              }
         }
    }
    
  2. Phiên giao diện người dùng theo dõi sau đây hiển thị 500 mã trạng thái do lỗi trong Dịch vụ Chính sách về chú thích:

  3. Trong ví dụ này, "lỗi" tài sản liệt kê lý do áp dụng chính sách Chú thích dịch vụ lỗi là "ResponseCode 404 is coi as error". Lỗi này có thể xảy ra nếu tài nguyên đang được truy cập thông qua URL của máy chủ phụ trợ trong Chính sách chú thích dịch vụ sẵn có.
  4. Kiểm tra khả năng sử dụng tài nguyên trên máy chủ phụ trợ. Có thể không có tạm thời/vĩnh viễn hoặc có thể đã được chuyển đến một vị trí khác.

Ví dụ 1: Độ phân giải

  1. Kiểm tra khả năng sử dụng tài nguyên trên máy chủ phụ trợ. Có thể không có tạm thời/vĩnh viễn hoặc có thể đã được chuyển đến một vị trí khác.
  2. Sửa URL máy chủ phụ trợ trong chính sách Chú thích dịch vụ để trỏ đến một URL hợp lệ và hiện có nguồn.
  3. Nếu tài nguyên chỉ tạm thời không sử dụng được, hãy thử gửi yêu cầu API sau tài nguyên của bạn.

Ví dụ 2: Lỗi trong chính sách Trích xuất biến

Bây giờ hãy xem một ví dụ khác gây ra lỗi máy chủ nội bộ 500 trong chính sách Biến trích xuất và xem cách khắc phục sự cố cũng như giải quyết vấn đề.

  1. Dấu vết sau trong phiên giao diện người dùng cho thấy mã trạng thái 500 do có lỗi trong Trích xuất Chính sách biến:

  2. Chọn chính sách Trích xuất biến không thành công, di chuyển xuống và xem "Lỗi Content" (Nội dung) để biết thêm chi tiết:

  3. Nội dung lỗi cho biết rằng biến"serviceCallout.oamCookieValidationResponse" không có trong chính sách Biến trích xuất. Như tên của biến cho biết, nó sẽ chứa nội dung phản hồi theo Chính sách chú thích dịch vụ trước đó.
  4. Chọn chính sách Chú thích dịch vụ trong dấu vết và bạn có thể thấy rằng "serviceCallout.oamCookieValidationResponse" biến chưa được đặt. Chiến dịch này cho biết lệnh gọi đến dịch vụ phụ trợ không thành công, dẫn đến phản hồi trống biến.
  5. Mặc dù chính sách Chú thích cho dịch vụ không thực thi được, nhưng bạn không thể thực thi các chính sách sau khi đã triển khai Dịch vụ Chính sách chú thích sẽ tiếp tục do lỗi "continueOnError" gắn cờ trong chính sách Chú thích dịch vụ đã được đặt thành true, như minh hoạ dưới đây:

    <ServiceCallout async="false" continueOnError="true" enabled="true" name="Callout.OamCookieValidation">
      <DisplayName>Callout.OamCookieValidation</DisplayName>
      <Properties />
      <Request clearPayload="true" variable="serviceCallout.oamCookieValidationRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      </Request>
      <Response>serviceCallout.oamCookieValidationResponse</Response>
      <HTTPTargetConnection>
        <Properties />
        <URL>http://{Url}</URL>
      </HTTPTargetConnection>
    </ServiceCallout>
    
  6. Hãy lưu ý mã thông báo duy nhất &quot;X-Apigee.Message-ID&quot; cho API cụ thể này từ dấu vết, như sau:
    1. Chọn hộp kiểm "Analytics Data đã ghi" giai đoạn trong yêu cầu.
    2. Di chuyển xuống rồi ghi lại giá trị của X-Apigee.Message-ID.

  7. Xem nhật ký Trình xử lý thư (/opt/apigee/var/log/edge-message-processor/system.log) và tìm kiếm giá trị duy nhất mã tin nhắn được ghi chú ở bước 6. Đã phát hiện thấy thông báo lỗi sau đây đối với API cụ thể yêu cầu:
    2017-05-05 07:48:18,653 org:myorg env:prod api:myapi rev:834 messageid:rrt-04984fed9e5ad3551-c-wo-32168-77563  NIOThread@5 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@149081 useCount=1 bytesRead=0 bytesWritten=0 age=3002ms lastIO=3002ms .onConnectTimeout connectAddress=mybackend.domain.com/XX.XX.XX.XX:443 resolvedAddress=mybackend.domain.com/XX.XX.XX.XX
    

    Lỗi ở trên cho biết rằng chính sách về Chú thích dịch vụ không hoạt động do có kết nối lỗi hết thời gian chờ khi kết nối với máy chủ phụ trợ.

  8. Để xác định nguyên nhân gây ra lỗi hết thời gian chờ kết nối, đã thực thi telnet qua(các) Trình xử lý thông báo gửi tới máy chủ phụ trợ. Mạng viễn thông lệnh đã đưa ra "Kết nối đã hết thời gian chờ" lỗi như sau:
    telnet mybackend.domain.com 443
    Trying XX.XX.XX.XX...
    telnet: connect to address XX.XX.XX.XX: Connection timed out
    

    Thông thường, bạn sẽ thấy lỗi này trong các trường hợp sau:

    • Khi máy chủ phụ trợ không được định cấu hình để cho phép lưu lượng truy cập từ Edge Message Bộ xử lý.
    • Nếu máy chủ phụ trợ không theo dõi trên cổng cụ thể.

    Trong ví dụ minh hoạ ở trên, mặc dù chính sách Trích xuất biến không thành công, nhưng nguyên nhân là Edge không thể kết nối với máy chủ phụ trợ trong Chú thích dịch vụ . Nguyên nhân gây ra lỗi này là do máy chủ cuối phụ trợ không được định cấu hình để cho phép lưu lượng truy cập từ Trình xử lý thông báo của Edge.

    Chính sách Biến trích xuất của riêng bạn sẽ hoạt động theo cách khác và có thể không thành công đối với một lý do. Bạn có thể khắc phục vấn đề một cách thích hợp tuỳ thuộc vào nguyên nhân gây ra lỗi chính sách Trích xuất biến bằng cách kiểm tra thông báo trong phần lỗi thuộc tính này.

Ví dụ 2: Độ phân giải

  1. Khắc phục nguyên nhân gây ra lỗi hoặc không thực hiện được trong chính sách Trích xuất biến một cách thích hợp.
  2. Trong ví dụ minh hoạ ở trên, giải pháp là chỉnh sửa cấu hình mạng thành cho phép lưu lượng truy cập từ Trình xử lý thư Edge vào máy chủ phụ trợ của bạn. Việc này được thực hiện bởi đưa Trình xử lý thư vào danh sách cho phép Địa chỉ IP trên máy chủ phụ trợ cụ thể. Ví dụ: trên Linux, bạn có thể sử dụng iptables để cho phép lưu lượng truy cập từ Địa chỉ IP của Trình xử lý thư trên máy chủ phụ trợ.

Ví dụ 3: Lỗi trong chính sách JavaAnnotation

Bây giờ hãy xem thêm một ví dụ khác khi lỗi máy chủ nội bộ 500 xảy ra trong Chính sách chú thích Java và xem cách khắc phục sự cố cũng như giải quyết vấn đề.

  1. Dấu vết giao diện người dùng sau đây hiển thị mã trạng thái 500 do lỗi trong Chính sách chú thích Java:

  2. Chọn Quy trình có tên "Lỗi", theo sau là Chính sách chú thích Java không thành công để xem thông tin chi tiết về lỗi như trong hình bên dưới:

  3. Trong ví dụ này, thuộc tính "error" trong phần Thuộc tính cho biết lỗi là do mật khẩu đã hết hạn được sử dụng trong khi kết nối với Cơ sở dữ liệu Oracle ngay trong chính sách JavaAnnotation. Chú thích Java của riêng bạn sẽ hoạt động theo cách khác và sẽ điền thông báo khác vào thuộc tính error.
  4. Kiểm tra mã chính sách JavaAnnotation và xác nhận cấu hình chính xác cần được đã sử dụng.

Ví dụ 3: Độ phân giải

Hãy sửa mã chú thích hoặc cấu hình Java một cách phù hợp để tránh ngoại lệ đối với thời gian chạy. Ngang bằng ví dụ minh hoạ về lỗi chú thích Java ở trên, người dùng sẽ cần sử dụng đúng mật khẩu để kết nối với cơ sở dữ liệu Oracle nhằm giải quyết sự cố.

Lỗi ở máy chủ phụ trợ

Lỗi máy chủ nội bộ 500 cũng có thể bắt nguồn từ máy chủ phụ trợ. Phần này giải thích cách khắc phục sự cố nếu lỗi xuất phát từ máy chủ phụ trợ.

Chẩn đoán

Các bước chẩn đoán cho tất cả người dùng

Nguyên nhân gây ra các lỗi phụ trợ khác có thể rất khác nhau. Bạn cần chẩn đoán từng tình huống một cách độc lập.

  1. Xác minh rằng lỗi là do máy chủ phụ trợ gây ra. Hãy xem phần Xác định nguồn gốc của vấn đề để biết thông tin chi tiết.
  2. Nếu lỗi là do máy chủ phụ trợ, hãy tiếp tục. Nếu xảy ra lỗi trong khoảng thời gian thực thi chính sách, chuyển đến phần Execution Error in Edge (Lỗi thực thi trên Edge) Chính sách.
  3. Hãy làm theo các bước bên dưới tuỳ thuộc vào việc bạn có quyền truy cập vào phiên Theo dõi cho API bị lỗi hoặc nếu phần phụ trợ là máy chủ Node.js:

Nếu bạn không có phiên Theo dõi cho lệnh gọi API không thành công:

  1. Nếu dấu vết giao diện người dùng không có sẵn cho yêu cầu không thành công, hãy kiểm tra máy chủ phụ trợ nhật ký để xem thông tin chi tiết về 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.

Nếu bạn có phiên Theo dõi cho lệnh gọi API không thành công:

Nếu bạn có phiên Theo dõi, thì các bước sau sẽ giúp bạn chẩn đoán sự cố.

  1. Trong công cụ Theo dõi, hãy chọn yêu cầu API không thực hiện được với 500 máy chủ nội bộ Lỗi.
  2. Chọn giai đoạn "Phản hồi nhận được từ máy chủ đích" từ trạng thái không thành công Yêu cầu API như minh hoạ trong hình dưới đây:

  3. Kiểm tra phần "Nội dung phản hồi" để biết thông tin chi tiết về lỗi.

  4. Trong ví dụ này, Nội dung phản hồi là Phong bì SOAP, hiển thị chuỗi lỗi dưới dạng Thông báo "Không được phép". Nguyên nhân có khả năng cao nhất gây ra lỗi này vấn đề là thông tin đăng nhập phù hợp (tên người dùng/mật khẩu, mã truy cập, v.v.) không được chuyển đến máy chủ phụ trợ bởi người dùng. Có thể khắc phục sự cố này bằng cách chuyển thông tin xác thực chính xác đến máy chủ phụ trợ.

Nếu phần phụ trợ là máy chủ Node.js:

  1. Nếu phần phụ trợ là Máy chủ phụ trợ Node.js, hãy kiểm tra nhật ký Node.js cho Proxy API cụ thể trong giao diện người dùng Edge (cả người dùng Đám mây công khai và riêng tư đều có thể hãy kiểm tra nhật ký Node.js). Nếu là người dùng Edge Private Cloud, bạn cũng có thể kiểm tra nhật ký Trình xử lý thư của bạn (/opt/apigee/var/log/edge-message-processor/logs/system.log) để biết thêm chi tiết về lỗi.

    Tuỳ chọn Nhật ký NodeJS trong Giao diện người dùng Edge – Thẻ Tổng quan về Proxy API

Độ phân giải

  1. Sau khi bạn xác định được nguyên nhân gây ra lỗi, hãy khắc phục vấn đề trong máy chủ phụ trợ của bạn.
  2. Nếu là máy chủ phụ trợ Node.js:
    1. Kiểm tra xem lỗi có được gửi từ mã tuỳ chỉnh của bạn hay không và khắc phục vấn đề (nếu có thể).
    2. Nếu lỗi không được gửi từ mã tuỳ chỉnh của bạn hoặc nếu bạn cần hỗ trợ, hãy liên hệ với Hỗ trợ Apigee.

Nếu bạn cần hỗ trợ thêm để khắc phục sự cố 500 Lỗi máy chủ nội bộ hoặc nghi ngờ đó là một vấn đề trong Edge, hãy liên hệ với Apigee Hỗ trợ.

Xác định nguồn gốc vấn đề

Sử dụng một trong các quy trình sau để xác định xem có xảy ra Lỗi máy chủ nội bộ 500 hay không trong quá trình thực thi chính sách trong proxy API hoặc tại máy chủ phụ trợ.

Sử dụng công cụ Theo dõi trong giao diện người dùng

Lưu ý: Các bước trong phần này đều có thể thực hiện bởi cả Công khai và Người dùng Cloud riêng tư.

  1. Nếu vấn đề vẫn còn, hãy bật tính năng theo dõi trong giao diện người dùng cho API bị ảnh hưởng.
  2. Sau khi bạn ghi lại dấu vết, hãy chọn yêu cầu API cho thấy mã phản hồi dưới dạng 500.
  3. Xem qua tất cả các giai đoạn của một yêu cầu API không thành công và kiểm tra xem giai đoạn nào được trả về lỗi máy chủ nội bộ 500:
    1. Nếu lỗi được tạo ra trong quá trình thực thi chính sách, hãy chuyển đến phần Lỗi thực thi trong chính sách Edge.
    2. Nếu máy chủ phụ trợ đã phản hồi bằng 500 Máy chủ nội bộ, hãy chuyển sang bước Lỗi trong Máy chủ phụ trợ.

Sử dụng tính năng giám sát API

Lưu ý: Chỉ người dùng Cloud Public mới có thể thực hiện các bước trong phần này.

Tính năng Giám sát API giúp bạn nhanh chóng tách biệt các khu vực có vấn đề để chẩn đoán các vấn đề về lỗi, hiệu suất và độ trễ cũng như nguồn gốc của các vấn đề đó. 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.

Xem qua một tình huống mẫu 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 nên thiết lập cảnh báo để nhận thông báo khi số lượng 500 mã trạng thái hoặc lỗi steps.servicecallout.ExecutionFailed vượt quá một ngưỡng cụ thể.

Sử dụng quyền truy cập NGINX Nhật ký

Lưu ý: Các bước trong phần này dành cho người dùng Edge Private Cloud .

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 500 có được gửi hay không trong quá trình thực thi chính sách trong proxy API hoặc tại máy chủ phụ trợ. Đây là đặc biệt hữu ích nếu vấn đề đã xảy ra trong quá khứ hoặc nếu vấn đề 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 kiếm nếu có bất kỳ Lỗi 500 lỗi nào đối với proxy API cụ thể tại thời lượng.
  3. Nếu có bất kỳ Lỗi 500 nào, hãy kiểm tra xem lỗi đó là do chính sách hay lỗi máy chủ mục tiêu, như minh hoạ dưới đây:

    Mục nhập mẫu cho thấy lỗi chính sách

    Mục nhập mẫu cho thấy Lỗi máy chủ mục tiêu

  4. Sau khi bạn đã xác định được đó là lỗi máy chủ chính sách hay lỗi máy chủ đích:
    1. Tiếp tục phần Lỗi thực thi trong chính sách Edge nếu đó là lỗi chính sách.
    2. Tiếp tục đến phần Lỗi trong máy chủ phụ trợ nếu đó là một mục tiêu lỗi máy chủ.