500 ข้อผิดพลาดภายในเซิร์ฟเวอร์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

วิดีโอ

ดูวิดีโอต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขข้อผิดพลาดภายในเซิร์ฟเวอร์ 500

วิดีโอ คำอธิบาย
บทนำ แนะนำข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการและสาเหตุที่เป็นไปได้ นอกจากนี้ยังแสดงให้เห็นข้อผิดพลาดภายในเซิร์ฟเวอร์ภายใน 500 แบบเรียลไทม์ พร้อมด้วยขั้นตอนในการแก้ปัญหาและข้อผิดพลาดดังกล่าว
จัดการข้อผิดพลาดเกี่ยวกับข้อความไฮไลต์บริการและการแยกตัวแปร แสดงข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 จำนวน 2 รายการที่เกิดจากนโยบายคำขอราคาเสนอบริการและการดึงข้อมูลตัวแปร รวมทั้งแสดงวิธีแก้ปัญหาและข้อผิดพลาดเหล่านี้
จัดการข้อผิดพลาดเกี่ยวกับนโยบาย JavaScript แสดงข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 ที่เกิดจากนโยบาย JavaScript และขั้นตอนในการแก้ปัญหาและข้อผิดพลาดนี้
จัดการความล้มเหลวจากเซิร์ฟเวอร์แบ็กเอนด์ แสดงตัวอย่าง 500 ข้อผิดพลาดเซิร์ฟเวอร์ภายในที่เกิดจากความล้มเหลวในเซิร์ฟเวอร์แบ็กเอนด์ และแสดงขั้นตอนในการแก้ไขข้อผิดพลาด

ลักษณะปัญหา

แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 500 พร้อมข้อความ "ข้อผิดพลาดภายในเซิร์ฟเวอร์" เป็นการตอบกลับสำหรับการเรียก API ข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 อาจเกิดจากข้อผิดพลาดระหว่างการดำเนินการของนโยบายภายใน Edge หรือจากข้อผิดพลาดในเซิร์ฟเวอร์ปลายทาง/แบ็กเอนด์

รหัสสถานะ HTTP 500 เป็นการตอบสนองข้อผิดพลาดโดยทั่วไป ข้อผิดพลาดนี้หมายความว่าเซิร์ฟเวอร์พบปัญหาที่ไม่คาดคิดซึ่งทำให้ดำเนินการตามคำขอไม่ได้ ข้อผิดพลาดนี้มักจะแสดงจากเซิร์ฟเวอร์เมื่อไม่มีรหัสข้อผิดพลาดอื่นที่เหมาะสม

ข้อความแสดงข้อผิดพลาด

คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้

HTTP/1.1 500 Internal Server Error

ในบางกรณี คุณอาจสังเกตเห็นข้อความแสดงข้อผิดพลาดอื่นที่มีรายละเอียดเพิ่มเติม ตัวอย่างข้อความแสดงข้อผิดพลาดมีดังนี้

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

สาเหตุที่เป็นไปได้

ข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 อาจเกิดจากสาเหตุหลายประการ ใน Edge คุณจำแนกสาเหตุได้เป็น 2 หมวดหมู่หลักตามตําแหน่งที่เกิดข้อผิดพลาด ดังนี้

สาเหตุ รายละเอียด เราดูขั้นตอนการแก้ปัญหาโดยละเอียด
ข้อผิดพลาดในการดำเนินการในนโยบาย Edge นโยบายภายในพร็อกซี API อาจล้มเหลวด้วยเหตุผลบางอย่าง ผู้ใช้ Edge ส่วนตัวและระบบคลาวด์สาธารณะ
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ เซิร์ฟเวอร์แบ็กเอนด์อาจล้มเหลวด้วยเหตุผลบางอย่าง ผู้ใช้ Edge ส่วนตัวและระบบคลาวด์สาธารณะ

ข้อผิดพลาดในการดำเนินการในนโยบาย Edge

นโยบายภายในพร็อกซี API อาจล้มเหลวด้วยเหตุผลบางอย่าง ส่วนนี้จะอธิบายวิธีการแก้ปัญหาหากข้อผิดพลาด 500 ของเซิร์ฟเวอร์ภายในระหว่างการดำเนินการของนโยบาย

การวินิจฉัย

ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ระบบคลาวด์ส่วนตัวและผู้ใช้ระบบคลาวด์สาธารณะ

ถ้าคุณมีเซสชัน UI การติดตามสำหรับข้อผิดพลาด ให้ทำดังนี้

  1. ตรวจสอบว่าข้อผิดพลาดเกิดจากการดำเนินการของนโยบาย โปรดดูรายละเอียดในการระบุแหล่งที่มาของปัญหา
  2. หากเกิดข้อผิดพลาดระหว่างการดำเนินการตามนโยบาย ให้ดำเนินการต่อ.. หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
  3. เลือกคำขอ API ที่ล้มเหลวโดยมีข้อผิดพลาด 500 เซิร์ฟเวอร์ภายในในการติดตาม
  4. ตรวจสอบคำขอและเลือกนโยบายที่เฉพาะเจาะจงซึ่งล้มเหลวหรือขั้นตอนที่ชื่อ "ข้อผิดพลาด" ซึ่งต่อจากนโยบายที่ล้มเหลวในการติดตาม
  5. ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดโดยตรวจสอบช่อง "ข้อผิดพลาด" ในส่วนพร็อพเพอร์ตี้หรือเนื้อหาข้อผิดพลาด
  6. พยายามระบุสาเหตุของปัญหาโดยใช้รายละเอียดที่รวบรวมเกี่ยวกับข้อผิดพลาด

ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ Private Cloud เท่านั้น

หากไม่มีเซสชัน UI การติดตาม ให้ทำดังนี้

  1. ตรวจสอบว่าเกิดข้อผิดพลาดระหว่างการดำเนินการตามนโยบาย โปรดดูรายละเอียดในการระบุแหล่งที่มาของปัญหา
  2. หากข้อผิดพลาดเกิดจากการดำเนินการนโยบาย ให้ดำเนินการต่อ หากเกิดข้อผิดพลาดระหว่างการดำเนินการของนโยบาย ให้ดำเนินการต่อ หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
  3. ใช้บันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในการระบุแหล่งที่มาของปัญหาเพื่อระบุนโยบายความล้มเหลวในพร็อกซี API รวมถึงรหัสข้อความคำขอที่ไม่ซ้ำกัน
  4. ตรวจสอบบันทึกตัวประมวลผลข้อความ (/opt/apigee/var/log/edge-message-processor/logs/system.log) และค้นหารหัสข้อความคำขอที่ไม่ซ้ำกันในบันทึก
  5. หากพบรหัสข้อความคำขอที่ไม่ซ้ำกัน โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุของความล้มเหลว

ความละเอียด

หากคุณได้ระบุสาเหตุของปัญหากับนโยบายแล้ว ให้ลองแก้ไขปัญหาโดยการแก้ไขนโยบายและทำให้พร็อกซีใช้งานได้อีกครั้ง

ตัวอย่างต่อไปนี้แสดงถึงวิธีระบุสาเหตุและวิธีแก้ปัญหาประเภทต่างๆ

หากต้องการความช่วยเหลือเพิ่มเติมในการแก้ปัญหา 500 Internal Server Error หรือสงสัยว่าเป็นปัญหาใน Edge โปรดติดต่อทีมสนับสนุนของ Apigee

ตัวอย่างที่ 1: เกิดความล้มเหลวในนโยบายคำขอราคาเสนอบริการเนื่องจากข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์

หากการเรียกไปยังเซิร์ฟเวอร์แบ็กเอนด์ล้มเหลวภายในนโยบายการเรียกบริการโดยมีข้อผิดพลาด เช่น 4XX หรือ 5XX ระบบจะถือว่าเป็น 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์

  1. นี่คือตัวอย่างที่บริการแบ็กเอนด์ทำงานไม่สำเร็จโดยมีข้อผิดพลาด 404 ภายในนโยบายคำขอราคาเสนอบริการ ระบบจะส่งข้อความแสดงข้อผิดพลาดต่อไปนี้ไปยังผู้ใช้ปลายทาง
    {
    "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. เซสชัน UI การติดตามต่อไปนี้แสดงรหัสสถานะ 500 ที่เกิดจากข้อผิดพลาดในนโยบายคำขอราคาเสนอบริการ

  3. ในตัวอย่างนี้ พร็อพเพอร์ตี้ "ข้อผิดพลาด" จะแสดงสาเหตุที่นโยบายคำขอราคาเสนอบริการล้มเหลว เนื่องจาก "ResponseCode 404 ถือเป็นข้อผิดพลาด" ข้อผิดพลาดนี้อาจเกิดขึ้นหากทรัพยากรที่เข้าถึงผ่าน URL ของเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการไม่พร้อมใช้งาน
  4. ตรวจสอบความพร้อมใช้งานของทรัพยากรในเซิร์ฟเวอร์แบ็กเอนด์ ฟีเจอร์นี้อาจไม่พร้อมใช้งานชั่วคราว/ถาวร หรืออาจมีการย้ายไปยังตำแหน่งอื่น

ตัวอย่างที่ 1 ความละเอียด

  1. ตรวจสอบความพร้อมใช้งานของทรัพยากรในเซิร์ฟเวอร์แบ็กเอนด์ ฟีเจอร์นี้อาจไม่พร้อมใช้งานชั่วคราว/ถาวร หรืออาจมีการย้ายไปยังตำแหน่งอื่น
  2. แก้ไข URL ของเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการให้ชี้ไปยังทรัพยากรที่ถูกต้องและมีอยู่
  3. หากทรัพยากรไม่พร้อมใช้งานชั่วคราวเท่านั้น ให้ลองสร้างคำขอ API เมื่อทรัพยากรพร้อมใช้งาน

ตัวอย่างที่ 2: ดำเนินการในนโยบายการดึงข้อมูลตัวแปรไม่สำเร็จ

ลองมาดูตัวอย่างอีกตัวอย่างหนึ่งกันว่า 500 Internal Server Error เกิดจากข้อผิดพลาดในนโยบายการดึงข้อมูลตัวแปรหรือไม่ และดูวิธีแก้ปัญหา

  1. การติดตามต่อไปนี้ในเซสชัน UI แสดงรหัสสถานะ 500 เนื่องจากเกิดข้อผิดพลาดในนโยบายการแยกตัวแปร

  2. เลือกนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลว เลื่อนลงแล้วดูที่ส่วน "เนื้อหาข้อผิดพลาด" เพื่อดูรายละเอียดเพิ่มเติม ดังนี้

  3. เนื้อหาข้อผิดพลาดระบุว่าตัวแปร "service callout.oamCookieValidationResponse" ไม่พร้อมใช้งานในนโยบายการดึงข้อมูลตัวแปร ตามชื่อของตัวแปร ตัวแปรควรมีการตอบสนองของนโยบายคำขอราคาเสนอบริการก่อนหน้า
  4. เลือกนโยบายคำขอราคาเสนอบริการในการติดตาม แล้วคุณอาจพบว่าไม่ได้ตั้งค่าตัวแปร "serviceCallout.oamCookieValidationResponse" นี่เป็นการบ่งชี้ว่าการเรียกไปยังบริการแบ็กเอนด์ล้มเหลว ซึ่งส่งผลให้ตัวแปรการตอบกลับว่างเปล่า
  5. แม้ว่านโยบายคำขอราคาเสนอบริการจะล้มเหลว แต่การดำเนินการนโยบายหลังจากนโยบายคำขอราคาเสนอบริการยังคงดำเนินต่อไป เนื่องจากแฟล็ก "continueOnError" ในนโยบายคำขอราคาเสนอบริการเป็น "จริง" ดังที่แสดงด้านล่าง

    <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. จดบันทึกรหัสข้อความที่ไม่ซ้ำกัน "X-Apigee.Message-ID" สำหรับคำขอ API ที่เฉพาะเจาะจงนี้จากการติดตาม ดังนี้
    1. เลือกเฟส "การบันทึกข้อมูล Analytics" จากคําขอ
    2. เลื่อนลงและจดบันทึกค่าของ X-Apigee.Message-ID

  7. ดูบันทึกตัวประมวลผลข้อความ (/opt/apigee/var/log/edge-message-processor/system.log) และค้นหารหัสข้อความที่ไม่ซ้ำกันซึ่งระบุไว้ในขั้นตอนที่ 6 พบข้อความแสดงข้อผิดพลาดต่อไปนี้สำหรับคำขอ API ที่เจาะจง
    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
    

    ข้อผิดพลาดข้างต้นบ่งบอกว่านโยบายคำขอราคาเสนอบริการล้มเหลวเนื่องจากข้อผิดพลาดหมดเวลาการเชื่อมต่อขณะเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์

  8. หากต้องการหาสาเหตุของข้อผิดพลาดหมดเวลาการเชื่อมต่อ ให้เรียกใช้คำสั่ง telnet จากตัวประมวลผลข้อความไปยังเซิร์ฟเวอร์แบ็กเอนด์ คำสั่ง telnet แสดงข้อผิดพลาด "การเชื่อมต่อหมดเวลา" ดังที่แสดงด้านล่าง
    telnet mybackend.domain.com 443
    Trying XX.XX.XX.XX...
    telnet: connect to address XX.XX.XX.XX: Connection timed out
    

    โดยทั่วไป ข้อผิดพลาดนี้จะเกิดขึ้นในกรณีต่อไปนี้

    • เมื่อไม่มีการกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์ให้อนุญาตการรับส่งข้อมูลจากตัวประมวลผลข้อความ Edge
    • หากเซิร์ฟเวอร์แบ็กเอนด์ไม่ฟังในพอร์ตที่ระบุ

    ในตัวอย่างที่แสดงด้านบน แม้ว่านโยบายการดึงข้อมูลตัวแปรจะล้มเหลว แต่สาเหตุจริงคือ Edge เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการไม่ได้ และสาเหตุของความล้มเหลวนี้ก็คือไม่มีการกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์แบ็กเอนด์ให้อนุญาตการรับส่งข้อมูลจาก Edge Message Processors อยู่

    นโยบายตัวแปรการดึงข้อมูลของคุณเองจะทำงานแตกต่างกันและอาจล้มเหลวเนื่องจากสาเหตุอื่น คุณแก้ปัญหาได้อย่างเหมาะสมโดยอิงตามสาเหตุที่นโยบายการแยกตัวแปรดึงข้อมูลทำไม่สำเร็จโดยการตรวจสอบข้อความในพร็อพเพอร์ตี้ข้อผิดพลาด

ตัวอย่างที่ 2 ความละเอียด

  1. โปรดแก้ไขสาเหตุของข้อผิดพลาดหรือความล้มเหลวในนโยบายการดึงข้อมูลตัวแปรอย่างเหมาะสม
  2. ในตัวอย่างที่แสดงให้เห็นด้านบน วิธีแก้ปัญหาคือการแก้ไขการกำหนดค่าเครือข่ายเพื่ออนุญาตการรับส่งข้อมูลจาก Edge Message Processors ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งทำได้โดยเพิ่มที่อยู่ IP ของผู้ประมวลผลข้อความไว้ในรายการที่อนุญาตในเซิร์ฟเวอร์แบ็กเอนด์ที่เจาะจง เช่น ใน Linux คุณอาจใช้ iptables เพื่ออนุญาตการรับส่งข้อมูลจากที่อยู่ IP ของผู้ประมวลผลข้อความในเซิร์ฟเวอร์แบ็กเอนด์

ตัวอย่างที่ 3: ทำงานล้มเหลวในนโยบาย Javaที่แตกต่างกัน

มาดูตัวอย่างเพิ่มเติมกันอีก 1 ตัวอย่างว่า 500 Internal Server Error เกิดจากข้อผิดพลาดในนโยบายการเรียก Java ได้อย่างไร และดูวิธีแก้ปัญหา

  1. การติดตาม UI ต่อไปนี้แสดงรหัสสถานะ 500 เนื่องจากข้อผิดพลาดใน Java Caption Policy

  2. เลือกโฟลว์ที่ชื่อว่า "Error" ตามด้วยนโยบายไฮไลต์ของ Java ที่ล้มเหลวเพื่อรับรายละเอียดข้อผิดพลาดดังที่แสดงในรูปด้านล่าง

  3. ในตัวอย่างนี้ พร็อพเพอร์ตี้ "error" ใต้ส่วนคุณสมบัติเผยให้เห็นว่าความล้มเหลวเกิดจากการใช้รหัสผ่านหมดอายุขณะเชื่อมต่อกับฐานข้อมูล Oracle จากภายในนโยบาย Javaที่แตกต่างกัน ไฮไลต์ Java ของคุณเองจะทำงานแตกต่างกันและจะสร้างข้อความอื่นในพร็อพเพอร์ตี้ error
  4. โปรดตรวจสอบโค้ดนโยบาย JavaCaption และยืนยันการกำหนดค่าที่ถูกต้องซึ่งจำเป็นต้องใช้

ตัวอย่างที่ 3 ความละเอียด

แก้ไขโค้ดข้อความไฮไลต์หรือการกำหนดค่าของ Java อย่างเหมาะสมเพื่อหลีกเลี่ยงข้อยกเว้นรันไทม์ ในตัวอย่างที่แสดงความล้มเหลวของไฮไลต์ Java ด้านบน จะต้องมีการใช้รหัสผ่านที่ถูกต้องสำหรับการเชื่อมต่อกับฐานข้อมูล Oracle เพื่อแก้ไขปัญหา

ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์

500 ข้อผิดพลาดภายในเซิร์ฟเวอร์อาจเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ด้วย ส่วนนี้จะอธิบายวิธีการแก้ปัญหาหากข้อผิดพลาดมาจากเซิร์ฟเวอร์แบ็กเอนด์

การวินิจฉัย

ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ทุกคน

สาเหตุของข้อผิดพลาดแบ็กเอนด์อื่นๆ อาจแตกต่างกันอย่างมาก คุณจะต้องวิเคราะห์แต่ละสถานการณ์แยกกัน

  1. ยืนยันว่าข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ โปรดดูรายละเอียดในการระบุแหล่งที่มาของปัญหา
  2. หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ดําเนินการต่อ หากข้อผิดพลาดเกิดขึ้นระหว่างการดำเนินการนโยบาย ให้ไปที่ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
  3. ทำตามขั้นตอนด้านล่างโดยขึ้นอยู่กับว่าคุณมีสิทธิ์เข้าถึงเซสชันการติดตามสำหรับ API ที่ล้มเหลวหรือไม่ หรือแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js หรือไม่

หากคุณไม่มีเซสชันการติดตามสำหรับการเรียก API ที่ล้มเหลว ให้ทำดังนี้

  1. หากการติดตาม UI ไม่พร้อมใช้งานสำหรับคำขอที่ล้มเหลว ให้ตรวจสอบบันทึกเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเกี่ยวกับข้อผิดพลาด
  2. หากเป็นไปได้ ให้เปิดใช้โหมดแก้ไขข้อบกพร่องในเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดและสาเหตุ

หากคุณมีเซสชันการติดตามสำหรับการเรียก API ที่ล้มเหลว ให้ทำดังนี้

หากคุณมีเซสชันการติดตาม ขั้นตอนต่อไปนี้จะช่วยคุณในการวินิจฉัยปัญหา

  1. ในเครื่องมือติดตาม ให้เลือกคำขอ API ที่ล้มเหลวโดยมีข้อผิดพลาด 500 ของเซิร์ฟเวอร์ภายใน
  2. เลือกเฟส "การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย" จากคำขอ API ที่ล้มเหลวดังที่แสดงในรูปภาพด้านล่าง

  3. ตรวจสอบส่วน "เนื้อหาการตอบกลับ" เพื่อดูรายละเอียดเกี่ยวกับข้อผิดพลาด

  4. ในตัวอย่างนี้ เนื้อหาการตอบกลับซึ่งเป็น SOAP Envelope จะแสดงสตริงข้อผิดพลาดเป็นข้อความ "ไม่ได้รับอนุญาต" สาเหตุที่เป็นไปได้มากที่สุดสำหรับปัญหานี้คือผู้ใช้ไม่ได้ส่งข้อมูลเข้าสู่ระบบที่เหมาะสม (ชื่อผู้ใช้/รหัสผ่าน โทเค็นเพื่อการเข้าถึง ฯลฯ) ปัญหานี้แก้ไขได้โดยการส่งข้อมูลเข้าสู่ระบบที่ถูกต้องไปยังเซิร์ฟเวอร์แบ็กเอนด์

หากแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js ให้ทำดังนี้

  1. หากแบ็กเอนด์เป็นเซิร์ฟเวอร์แบ็กเอนด์ของ Node.js ให้ตรวจสอบบันทึก Node.js เพื่อหาพร็อกซี API ที่ต้องการใน UI ของ Edge (ทั้งผู้ใช้ระบบคลาวด์สาธารณะและ Private Cloud จะตรวจสอบบันทึก Node.js ได้) หากคุณเป็นผู้ใช้ Edge Private Cloud คุณจะตรวจสอบบันทึกตัวประมวลผลข้อความ (/opt/apigee/var/log/edge-message-processor/logs/system.log) เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้

    ตัวเลือกบันทึกของ NodeJS ใน Edge UI - แท็บภาพรวมของพร็อกซี API

ความละเอียด

  1. เมื่อระบุสาเหตุของข้อผิดพลาดได้แล้ว ให้แก้ไขปัญหาในเซิร์ฟเวอร์แบ็กเอนด์
  2. หากเป็นเซิร์ฟเวอร์แบ็กเอนด์ของ Node.js ให้ทําดังนี้
    1. ตรวจสอบว่าข้อผิดพลาดนั้นเกิดจากโค้ดที่กำหนดเองของคุณหรือไม่ แล้วแก้ไขปัญหาหากทำได้
    2. หากข้อผิดพลาดไม่ได้เกิดจากโค้ดที่กำหนดเองหรือหากต้องการความช่วยเหลือ โปรดติดต่อทีมสนับสนุนของ Apigee

หากต้องการความช่วยเหลือเพิ่มเติมในการแก้ปัญหา 500 Internal Server Error หรือสงสัยว่าเป็นปัญหาใน Edge โปรดติดต่อทีมสนับสนุนของ Apigee

การระบุที่มาของปัญหา

ใช้ขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้เพื่อดูว่า 500 เกิดข้อผิดพลาดของเซิร์ฟเวอร์ภายในระหว่างการดำเนินการของนโยบายภายในพร็อกซี API หรือโดยเซิร์ฟเวอร์แบ็กเอนด์

การใช้การติดตามใน UI

หมายเหตุ: ขั้นตอนในส่วนนี้ทำได้โดยผู้ใช้ทั้งแบบสาธารณะและ Private Cloud

  1. หากยังคงพบปัญหาอยู่ ให้เปิดใช้การติดตามใน UI สำหรับ API ที่ได้รับผลกระทบ
  2. เมื่อคุณบันทึกการติดตามแล้ว ให้เลือกคำขอ API ที่แสดงโค้ดตอบกลับเป็น 500
  3. ไปยังทุกเฟสของคำขอ API ที่ล้มเหลว แล้วตรวจสอบว่าเฟสใดแสดงข้อผิดพลาด 500 ข้อผิดพลาดเซิร์ฟเวอร์ภายใน ดังนี้
    1. หากเกิดข้อผิดพลาดระหว่างการดำเนินการของนโยบาย ให้ไปที่ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
    2. หากเซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยเซิร์ฟเวอร์ภายใน 500 ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์

การใช้ API Monitoring

หมายเหตุ: ขั้นตอนในส่วนนี้จะดำเนินการโดยผู้ใช้ Cloud สาธารณะเท่านั้น

การตรวจสอบ API ช่วยให้คุณแยกส่วนที่เป็นปัญหาได้อย่างรวดเร็วเพื่อวิเคราะห์ปัญหาเกี่ยวกับข้อผิดพลาด ประสิทธิภาพ และเวลาในการตอบสนองและแหล่งที่มา เช่น แอปของนักพัฒนาซอฟต์แวร์, พร็อกซี API, เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API

ดูสถานการณ์ตัวอย่างที่แสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API โดยใช้ API Monitoring ตัวอย่างเช่น คุณอาจต้องการตั้งการแจ้งเตือนเมื่อจำนวนรหัสสถานะ 500 รหัสหรือมีข้อผิดพลาด steps.servicecallout.ExecutionFailed เกินเกณฑ์ที่กำหนด

การใช้บันทึกการเข้าถึง NGINX

หมายเหตุ: ขั้นตอนในส่วนนี้มีไว้สำหรับผู้ใช้ Edge Private Cloud เท่านั้น

นอกจากนี้ คุณยังดูบันทึกการเข้าถึง NGINX ได้ด้วย เพื่อดูว่ารหัสสถานะ 500 มีการส่งระหว่างการดำเนินการนโยบายภายในพร็อกซี API หรือโดยเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งจะเป็นประโยชน์อย่างยิ่งหากปัญหาเกิดขึ้นในอดีต หรือหากปัญหาเกิดขึ้นเป็นบางครั้งและคุณ จับภาพการติดตามใน UI ไม่ได้ ทำตามขั้นตอนต่อไปนี้เพื่อระบุข้อมูลนี้จากบันทึกการเข้าถึง NGINX

  1. ตรวจสอบบันทึกการเข้าถึง NGINX (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log )
  2. ค้นหาว่ามีข้อผิดพลาด 500 สำหรับพร็อกซี API ที่ระบุในช่วงเวลาที่เจาะจงหรือไม่
  3. หากมีข้อผิดพลาด 500 ให้ตรวจสอบว่าข้อผิดพลาดนั้นเป็นนโยบายหรือข้อผิดพลาดของเซิร์ฟเวอร์เป้าหมายตามที่แสดงด้านล่าง

    รายการตัวอย่างที่แสดงข้อผิดพลาดด้านนโยบาย

    รายการตัวอย่างที่แสดงข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์เป้าหมาย

  4. เมื่อคุณทราบแล้วว่าเป็นข้อผิดพลาดเกี่ยวกับนโยบายหรือเซิร์ฟเวอร์เป้าหมาย ให้ทำดังนี้
    1. ดำเนินการต่อกับข้อผิดพลาดในการดำเนินการในนโยบาย Edge หากเป็นข้อผิดพลาดของนโยบาย
    2. ดำเนินการต่อไปยังข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ หากเป็นข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์เป้าหมาย