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

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

วิดีโอ

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

วิดีโอ คำอธิบาย
บทนำ ให้คำแนะนำเกี่ยวกับข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการและสาเหตุที่เป็นไปได้ และแสดง ข้อผิดพลาดภายในเซิร์ฟเวอร์แบบเรียลไทม์ 500 รวมทั้งขั้นตอนการแก้ปัญหาและแก้ไขข้อผิดพลาด
จัดการข้อผิดพลาดเกี่ยวกับข้อความไฮไลต์บริการและตัวแปรการแตกข้อมูล แสดงข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการที่เกิดจากนโยบายคำขอราคาเสนอบริการและตัวแปรการดึงข้อมูล และแสดงวิธีแก้ปัญหาและข้อผิดพลาดเหล่านี้
จัดการข้อผิดพลาดเกี่ยวกับนโยบาย 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 Private และ Public Cloud
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ เซิร์ฟเวอร์แบ็กเอนด์อาจล้มเหลวด้วยเหตุผลบางอย่าง ผู้ใช้ Edge Private และ Public Cloud

ข้อผิดพลาดในการดำเนินการในนโยบาย 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 เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ หรือคุณสงสัย ว่าเป็นปัญหาใน 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 ของเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการให้ชี้ไปยัง URL ที่ถูกต้องและที่มีอยู่ ทรัพยากร
  3. หากทรัพยากรไม่พร้อมใช้งานชั่วคราว ให้ลองส่งคำขอ API เมื่อ มีทรัพยากร

ตัวอย่างที่ 2: นโยบายการดึงข้อมูลตัวแปรล้มเหลว

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

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

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

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

    วันที่
    <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. จดบันทึกรหัสข้อความที่ไม่ซ้ำกัน &quot;X-Apigee.Message-ID&quot; สำหรับ 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 จาก Message Processor ไปยังเซิร์ฟเวอร์แบ็กเอนด์ Telnet คำสั่งระบุว่า "การเชื่อมต่อหมดเวลา" ดังที่แสดงด้านล่าง
    telnet mybackend.domain.com 443
    Trying XX.XX.XX.XX...
    telnet: connect to address XX.XX.XX.XX: Connection timed out
    

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

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

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

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

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

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

ตัวอย่างที่ 3: นโยบาย JavaCall ล้มเหลว

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

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

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

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

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

หากแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js

  1. หากแบ็กเอนด์เป็นเซิร์ฟเวอร์แบ็กเอนด์ Node.js ให้ตรวจสอบบันทึก Node.js สำหรับพร็อกซี API ที่เจาะจงใน Edge UI (ทั้งผู้ใช้แบบสาธารณะและ 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 เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ หรือคุณสงสัย ว่าเป็นปัญหาใน Edge โปรดติดต่อ Apigee การสนับสนุน

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

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

การใช้ Trace ใน UI

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

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

การใช้การตรวจสอบ API

หมายเหตุ: เฉพาะผู้ใช้ระบบคลาวด์สาธารณะเท่านั้นที่ทำตามขั้นตอนในส่วนนี้ได้

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

ดูตัวอย่างสถานการณ์ที่แสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API โดยใช้การตรวจสอบ API ตัวอย่างเช่น คุณอาจต้องการตั้งค่าการแจ้งเตือนเมื่อรหัสสถานะ 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. ดำเนินการต่อด้วยข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์หากเป็นเป้าหมาย ข้อผิดพลาดของเซิร์ฟเวอร์