502 เกตเวย์ไม่ถูกต้อง - TooBigBody

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

ลักษณะปัญหา

แอปพลิเคชันไคลเอ็นต์จะได้รับรหัสสถานะ HTTP 502 Bad Gateway พร้อมรหัสข้อผิดพลาด protocol.http.TooBigBody เป็นการตอบกลับสำหรับการเรียก API

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

แอปพลิเคชันไคลเอ็นต์จะได้รับโค้ดตอบกลับต่อไปนี้

HTTP/1.1 502 Bad Gateway

นอกจากนี้ คุณอาจเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้

{
   "fault":{
      "faultstring":"Body buffer overflow",
      "detail":{
         "errorcode":"protocol.http.TooBigBody"
      }
   }
}

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

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

สาเหตุที่เป็นไปได้ของข้อผิดพลาดมีดังนี้

สาเหตุ คำอธิบาย วิธีการแก้ปัญหาที่ใช้ได้กับ
ขนาดเพย์โหลดของคำตอบใหญ่กว่าขีดจำกัดที่อนุญาต ขนาดเพย์โหลดที่เซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ส่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ไปยัง Apigee มีขนาดเกินขีดจำกัดที่อนุญาตใน Apigee ผู้ใช้ Edge Public และ Private Cloud
ขนาดเพย์โหลดการตอบกลับเกินขีดจำกัดที่อนุญาตหลังจาก การคลายการบีบอัด ขนาดเพย์โหลดที่เซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ส่งในรูปแบบที่บีบอัดเป็นส่วนหนึ่งของการตอบกลับ HTTP ไปยัง Apigee มีขนาดเกินขีดจำกัดที่อนุญาตเมื่อ Apigee ยกเลิกการบีบอัด ผู้ใช้ Edge Public และ Private Cloud

ขั้นตอนการวินิจฉัยที่พบบ่อย

ใช้เครื่องมือ/เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้เพื่อวินิจฉัยข้อผิดพลาดนี้

การตรวจสอบ API

วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API

  1. ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
  2. เปลี่ยนไปใช้องค์กรที่คุณต้องการตรวจสอบปัญหา

  3. ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
  4. เลือกกรอบเวลาที่เฉพาะเจาะจงซึ่งคุณพบข้อผิดพลาด
  5. คุณอาจเลือกตัวกรองพร็อกซีเพื่อจำกัดรหัสข้อผิดพลาดให้แคบลง
  6. พล็อตรหัสข้อบกพร่องเทียบกับเวลา
  7. เลือกเซลล์ที่มีรหัสข้อบกพร่อง protocol.http.TooBigBody ดังที่ แสดงด้านล่าง

  8. คุณจะเห็นข้อมูลเกี่ยวกับรหัสข้อบกพร่อง protocol.http.TooBigBody ดังที่แสดงด้านล่าง

  9. คลิกดูบันทึก แล้วขยายแถวสำหรับคำขอที่ไม่สำเร็จ

  10. จากหน้าต่างบันทึก ให้จดรายละเอียดต่อไปนี้
    • รหัสสถานะ: 502
    • แหล่งที่มาของข้อผิดพลาด: target
    • รหัสข้อบกพร่อง: protocol.http.TooBigBody
  11. หาก Fault Source มีค่า target และ Fault Code มีค่า protocol.http.TooBigBody แสดงว่าการตอบกลับ HTTP จากเซิร์ฟเวอร์เป้าหมาย/ แบ็กเอนด์มีขนาดเพย์โหลดการตอบกลับมากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge

Trace

วิธีวิเคราะห์ข้อผิดพลาดโดยใช้เครื่องมือติดตาม

  1. เปิดใช้เซสชันการติดตามและทำอย่างใดอย่างหนึ่งต่อไปนี้
    • รอให้เกิดข้อผิดพลาด 502 Bad Gateway หรือ
    • หากทำให้เกิดปัญหาซ้ำได้ ให้ทำการเรียก API และทำให้เกิด 502 Bad Gateway ข้อผิดพลาดซ้ำ
  2. เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง แล้วตรวจสอบการติดตาม
  3. ไปยังส่วนต่างๆ ของการติดตาม และค้นหาจุดที่เกิดข้อผิดพลาด
  4. ไปที่เฟสข้อผิดพลาดหลังจากเฟสได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย ดังที่แสดงด้านล่าง

    จดค่าของข้อผิดพลาดจากร่องรอย

    • ข้อผิดพลาด: Body buffer overflow
    • error.class: com.apigee.errors.http.server.BadGateway

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

  5. คุณจะเห็นความล้มเหลวในระยะส่งการตอบกลับไปยังไคลเอ็นต์ดังที่แสดงด้านล่าง

  6. จดค่าของข้อผิดพลาดจากร่องรอย การติดตามตัวอย่างข้างต้นแสดงข้อมูลต่อไปนี้
    • ข้อผิดพลาด: 502 Bad Gateway
    • เนื้อหาข้อผิดพลาด: {"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
  7. ไปที่ระยะได้รับการตอบกลับจากเซิร์ฟเวอร์เป้าหมายตามที่แสดงด้านล่างสำหรับสถานการณ์ต่างๆ

    ไม่มีการบีบอัด

    สถานการณ์ #1: ส่งเพย์โหลดการตอบกลับในรูปแบบที่ไม่ได้บีบอัด

    จดค่าของข้อผิดพลาดจากร่องรอย

    • การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย: 200 OK
    • Content-Length (จากส่วนส่วนหัวของการตอบกลับ): ~11MB

    ขนาดไฟล์ที่บีบอัด

    สถานการณ์ #2: ส่งเพย์โหลดคำขอในรูปแบบที่บีบอัด

    จดค่าของข้อผิดพลาดจากร่องรอย

    • การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย: 200 OK
    • Content-Encoding: หากเห็นส่วนหัวนี้ในส่วนส่วนหัวของการตอบกลับ ให้จดค่าไว้ เช่น ในตัวอย่างนี้ ค่าคือ gzip
  8. โปรดทราบเนื้อหาในส่วนเนื้อหาการตอบกลับ

    {"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
    
  9. ไปที่เฟส AX (บันทึกข้อมูลวิเคราะห์) ในการติดตาม แล้วคลิกเพื่อดูรายละเอียดที่เกี่ยวข้อง

  10. เลื่อนลงในรายละเอียดระยะไปที่ส่วนอ่านตัวแปร แล้วกำหนดค่า ของ target.received.content.length ซึ่งระบุสิ่งต่อไปนี้
    • ขนาดจริงของเพย์โหลดการตอบกลับเมื่อส่งในรูปแบบที่ไม่บีบอัด และ
    • ขนาดของเพย์โหลดการตอบกลับเมื่อ Apigee คลายการบีบอัด เมื่อมีการส่งเพย์โหลดในรูปแบบที่บีบอัด ซึ่งจะมีค่าเท่ากับค่าของขีดจำกัดที่อนุญาต (10 MB) ในสถานการณ์นี้เสมอ

    ไม่มีการบีบอัด

    สถานการณ์ #1: ส่งเพย์โหลดการตอบกลับในรูปแบบที่ไม่ได้บีบอัด

    จดค่าของ target.received.content.length:

    ส่วนหัวของคำขอ ค่า
    target.received.content.length ~11 MB

    ขนาดไฟล์ที่บีบอัด

    สถานการณ์ #2: ส่งเพย์โหลดคำขอในรูปแบบที่บีบอัด

    จดค่าของ target.received.content.length:

    ส่วนหัวของคำขอ ค่า
    target.received.content.length ~10 MB
  11. ตารางต่อไปนี้อธิบายสาเหตุที่ Apigee แสดงข้อผิดพลาด 502 ใน 2 สถานการณ์ตามค่าของ target.received.content.length

    สถานการณ์ ค่าของ target.received.content.length สาเหตุที่ทำให้ย้ายข้อมูลไม่สำเร็จ
    เพย์โหลดการตอบกลับในรูปแบบที่ไม่มีการบีบอัด ~11 MB ขนาดใหญ่กว่าขีดจำกัดที่อนุญาต 10 MB
    เพย์โหลดการตอบกลับในรูปแบบที่บีบอัด ~10 MB

    ขนาดเกินขีดจำกัดเมื่อคลายการบีบอัด

NGINX

วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX

  1. หากเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกการเข้าถึง NGINX เพื่อระบุข้อมูลสำคัญเกี่ยวกับข้อผิดพลาด HTTP 502 ได้
  2. ตรวจสอบบันทึกการเข้าถึง NGINX

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

    ตำแหน่ง: ORG, ENV และ PORT# จะถูกแทนที่ด้วยค่าจริง

  3. ค้นหาเพื่อดูว่ามี502ข้อผิดพลาดในช่วงระยะเวลาที่เฉพาะเจาะจง (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอที่ยังคงล้มเหลวด้วย502หรือไม่
  4. หากพบ502ข้อผิดพลาดที่มีX-Apigee-fault-code ตรงกับ ค่าของ protocol.http.TooBigBody ให้พิจารณาค่าของ X-Apigee-fault-source

    ตัวอย่างข้อผิดพลาด 502 จากบันทึกการเข้าถึงของ NGINX

    รายการตัวอย่างข้างต้นจากบันทึกการเข้าถึง NGINX มีค่าต่อไปนี้สำหรับ X-Apigee- fault-code และ X-Apigee-fault-source:

    ส่วนหัวการตอบกลับ ค่า
    X-Apigee-fault-code protocol.http.TooBigBody
    X-Apigee-fault-source target

สาเหตุ: ขนาดเพย์โหลดการตอบกลับใหญ่กว่าขีดจำกัดที่อนุญาต

การวินิจฉัย

  1. ระบุรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด และขนาดเพย์โหลดการตอบกลับสำหรับ ข้อผิดพลาดที่สังเกตได้โดยใช้การตรวจสอบ API, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไปในสถานการณ์ #1
  2. หากแหล่งที่มาของข้อผิดพลาดมีค่า target แสดงว่าขนาดเพย์โหลดของคำตอบที่เซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ส่งไปยัง Apigee มีขนาดมากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  3. ยืนยันขนาด Payload ของการตอบกลับตามที่กำหนดจากขั้นตอนที่ 1
  4. ตรวจสอบว่าขนาดเพย์โหลดการตอบกลับมีขนาด > 10 MB ตามขีดจำกัดที่อนุญาตจริงโดยทำตามขั้นตอนต่อไปนี้เพื่อตรวจสอบการตอบกลับจริง
    1. หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ไปที่การแก้ปัญหา
    2. หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ทำตามขั้นตอนต่อไปนี้
      1. หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ/ระบบคลาวด์ส่วนตัว ให้ส่งคำขอไปยัง เซิร์ฟเวอร์แบ็กเอนด์โดยตรงจากเซิร์ฟเวอร์แบ็กเอนด์เองหรือเครื่องอื่นๆ ที่คุณ ได้รับอนุญาตให้ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
      2. หากเป็นผู้ใช้ Private Cloud คุณยังส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์จากตัวประมวลผลข้อความตัวใดตัวหนึ่งได้ด้วย
      3. ตรวจสอบขนาดของเพย์โหลดที่ส่งในการตอบกลับโดยดูที่ ส่วนหัว Content-Length
      4. หากพบว่าเพย์โหลดมีขนาดเกิน ขีดจำกัดที่อนุญาตใน Apigee Edge แสดงว่านั่นคือสาเหตุของปัญหา

    ตัวอย่างการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์

    curl -v https://BACKENDSERVER-HOSTNAME/testfile
    
    * About to connect() to 10.14.0.10 port 9000 (#0)
    *   Trying 10.14.0.10...
    * Connected to 10.14.0.10 (10.148.0.10) port 9000 (#0)
    > GET /testfile HTTP/1.1
    > User-Agent: curl/7.29.0
    > Host: 10.14.0.10:9000
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Accept-Ranges: bytes
    < Content-Length: 11534336
    < Content-Type: application/octet-stream
    < Last-Modified: Wed, 30 Jun 2021 08:18:02 GMT
    < Date: Wed, 30 Jun 2021 09:22:41 GMT
    <
    ----snipped----
    <Response Body>

    ในตัวอย่างข้างต้น คุณจะเห็นว่า Content-Length: 11534336 (which is ~11 MB) ซึ่งเป็นสาเหตุของข้อผิดพลาดนี้เนื่องจากเกิน ขีดจำกัดที่อนุญาตใน Apigee Edge

ความละเอียด

ดูวิธีแก้ปัญหา

สาเหตุ: เพย์โหลดการตอบกลับมีขนาดเกินขีดจำกัดที่อนุญาตหลังจาก คลายการบีบอัด

หากส่งเพย์โหลดการตอบกลับในรูปแบบที่บีบอัดและตั้งค่าส่วนหัวการตอบกลับ Content-Encoding เป็น gzip, Apigee จะคลายการบีบอัดเพย์โหลด การตอบกลับ ในระหว่างกระบวนการคลายการบีบอัด หาก Apigee พบว่าขนาดของเพย์โหลดมากกว่า ขีดจำกัดที่อนุญาตใน Apigee Edge ระบบจะหยุดการคลายการบีบอัดเพิ่มเติม และตอบกลับทันทีด้วย 502 Bad Gateway และรหัสข้อผิดพลาด protocol.http.TooBigBody

การวินิจฉัย

  1. ระบุรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด และขนาดเพย์โหลดการตอบกลับสำหรับ ข้อผิดพลาดที่สังเกตได้โดยใช้การตรวจสอบ API, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไปในสถานการณ์ #2
  2. หาก Fault Source มีค่าเป็น target แสดงว่าขนาดเพย์โหลดการตอบกลับที่แอปพลิเคชันเป้าหมาย/แบ็กเอนด์ส่งไปยัง Apigee มากกว่า ขีดจำกัดที่อนุญาตใน Apigee Edge
  3. ยืนยันขนาด Payload ของการตอบกลับตามที่กำหนดจากขั้นตอนที่ 1
    • หากขนาดเพย์โหลด > ขีดจำกัดที่อนุญาต 10 MB แสดงว่านั่นคือสาเหตุของข้อผิดพลาด
    • หากขนาดเพย์โหลดเป็นไปตามขีดจำกัดที่อนุญาตประมาณ 10 MB แสดงว่าเพย์โหลดการตอบกลับอาจ ส่งในรูปแบบที่บีบอัด ในกรณีนี้ ให้ตรวจสอบขนาดที่ไม่ได้บีบอัดของเพย์โหลดการตอบกลับที่บีบอัด แล้ว
  4. คุณสามารถตรวจสอบว่าการตอบกลับจากเป้าหมาย/แบ็กเอนด์ถูกส่งในรูปแบบที่บีบอัดหรือไม่ และ ขนาดที่ไม่ได้บีบอัดมีขนาดใหญ่กว่าขีดจำกัดที่อนุญาตหรือไม่ โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

    Trace

    การใช้เครื่องมือติดตาม:

    1. หากคุณบันทึกการติดตามสำหรับคำขอที่ไม่สำเร็จ โปรดดูขั้นตอนโดยละเอียดใน Trace และ
      1. กำหนดค่าของ target.received.content.length
      2. ตรวจสอบว่าคำขอจากไคลเอ็นต์มีส่วนหัว Content-Encoding: gzip หรือไม่
    2. หากค่าของ target.received.content.length อยู่ที่ประมาณ 10 MB ซึ่งเป็นขีดจำกัดที่อนุญาต และส่วนหัวการตอบกลับคือ Content-Encoding: gzip นั่นคือ สาเหตุของข้อผิดพลาดนี้

    คำขอจริง

    การใช้คำขอจริง:

    1. หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ไปที่การแก้ปัญหา
    2. หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ทำตามขั้นตอนต่อไปนี้
      1. ยืนยันขนาดของเพย์โหลดที่ส่งในการตอบกลับพร้อมกับ Content-Encoding ส่วนหัวที่ส่งในการตอบกลับ
      2. หากพบว่าส่วนหัวการตอบกลับ Content-Encoding ตั้งค่าเป็น gzip และขนาดเพย์โหลดที่ไม่ได้บีบอัดมีขนาดมากกว่า ขีดจำกัดที่อนุญาตใน Apigee Edge แสดงว่านั่นคือสาเหตุของ ข้อผิดพลาดนี้

        ตัวอย่างการตอบกลับที่ได้รับจากเซิร์ฟเวอร์แบ็กเอนด์

        curl -v https://BACKENDSERVER-HOSTNAME/testzippedfile.gz
        
        * About to connect() to 10.1.0.10 port 9000 (#0)
        *   Trying 10.1.0.10...
        * Connected to 10.1.0.10 (10.1.0.10) port 9000 (#0)
        > GET /testzippedfile.gz HTTP/1.1
        > User-Agent: curl/7.29.0
        > Host: 10.1.0.10:9000
        > Accept: */*
        >
        < HTTP/1.1 200 OK
        < Accept-Ranges: bytes
        < Content-Encoding: gzip
        < Content-Type: application/x-gzip
        < Last-Modified: Wed, 30 Jun 2021 08:18:02 GMT
        < Testheader: test
        < Date: Wed, 07 Jul 2021 10:14:16 GMT
        < Transfer-Encoding: chunked
        <
        ----snipped----
        <Response Body>

        ในกรณีข้างต้น ระบบจะส่งส่วนหัว Content-Encoding: gzip และขนาดของไฟล์ testzippedfile.gz ในการตอบกลับจะน้อยกว่าขีดจำกัด แต่ขนาดของไฟล์ที่ไม่มีการบีบอัด testzippedfile จะอยู่ที่ประมาณ 15 MB

    บันทึกของ Message Processor

    การใช้บันทึกของ Message Processor

    1. หากคุณเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกของ Message Processor เพื่อ ระบุข้อมูลสำคัญเกี่ยวกับข้อผิดพลาด HTTP 502 ได้
    2. ตรวจสอบบันทึกของ Message Processor

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    3. ค้นหาเพื่อดูว่ามี502ข้อผิดพลาดในช่วงระยะเวลาที่เฉพาะเจาะจง (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอที่ยังคงล้มเหลวด้วย 502หรือไม่ คุณอาจใช้สตริงการค้นหาต่อไปนี้

      grep -ri "chunkCount"
      
      grep -ri "BadGateway: Body buffer overflow"
      
    4. คุณจะเห็นบรรทัดจาก system.log คล้ายกับที่แสดงด้านล่าง (TotalRead และ chunkCount อาจแตกต่างกันในกรณีของคุณ)
      2021-07-07 09:40:47,012  NIOThread@7 ERROR HTTP.SERVICE -
      TrackingInputChannel.checkMessageBodyTooLarge() : Message is too large.
      TotalRead 10489856 chunkCount 2571
      
      2021-07-07 09:40:47,012  NIOThread@7 ERROR HTTP.CLIENT -
      HTTPClient$Context.onInputException() :
      ClientInputChannel(ClientChannel[Connected:
      Remote:10.148.0.10:9000 Local:10.148.0.9:42240]@9155
      useCount=1 bytesRead=0 bytesWritten=182 age=23ms  lastIO=0ms
      isOpen=true).onExceptionRead exception: {}
      com.apigee.errors.http.server.BadGateway: Body buffer overflow
      
      2021-07-07 09:40:47,012  NIOThread@7 ERROR
      ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() :
      AbstractResponseListener.onError(HTTPResponse@77cbd7c4,
      Body buffer overflow)
    5. ในระหว่างกระบวนการคลายการบีบอัด ทันทีที่ Message Processor ระบุว่าไบต์ที่อ่านทั้งหมดมีค่ามากกว่า 10 MB ระบบจะหยุดและพิมพ์บรรทัดต่อไปนี้

      Message is too large. TotalRead 10489856 chunkCount 2571

      ซึ่งหมายความว่า ขนาดเพย์โหลดการตอบกลับมีขนาดมากกว่า 10 MB และ Apigee จะแสดงข้อผิดพลาดเมื่อขนาดเริ่มเกินขีดจำกัด 10 MB โดยมีรหัสข้อผิดพลาดเป็น protocol.http.TooBigBody

ความละเอียด

แก้ไขขนาด

ตัวเลือกที่ 1 [แนะนำ]: แก้ไขแอปพลิเคชันเซิร์ฟเวอร์เป้าหมายไม่ให้ส่งขนาดเพย์โหลดเกินขีดจำกัดของ Apigee

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

รูปแบบ URL ที่ลงนาม

ตัวเลือกที่ 2 [แนะนำ]: ใช้รูปแบบ URL ที่ลงนามแล้วภายใน Apigee JavaCallout

สำหรับเพย์โหลดที่มีขนาดใหญ่กว่า 10 MB Apigee ขอแนะนำให้ใช้รูปแบบ URL ที่ลงนามแล้วภายใน Apigee JavaCallout ซึ่งแสดงให้เห็นในตัวอย่าง Edge Callout: Signed URL Generator ใน GitHub

สตรีมมิง

ตัวเลือกที่ 3: ใช้การสตรีม

หากพร็อกซี API ต้องจัดการคำขอและ/หรือการตอบกลับที่มีขนาดใหญ่มาก คุณจะ เปิดใช้การสตรีมใน Apigee ได้

CwC

ตัวเลือกที่ 4: ใช้พร็อพเพอร์ตี้ CwC เพื่อเพิ่มขีดจำกัดบัฟเฟอร์

คุณควรใช้ตัวเลือกนี้เฉพาะในกรณีที่ไม่สามารถใช้ตัวเลือกที่แนะนำได้ เนื่องจากอาจมีปัญหาด้านประสิทธิภาพหากเพิ่มขนาดเริ่มต้น

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

จำกัดสูงสุด

Apigee คาดหวังว่าแอปพลิเคชันไคลเอ็นต์และเซิร์ฟเวอร์แบ็กเอนด์จะไม่ส่งเพย์โหลดที่มีขนาดใหญ่กว่า ขีดจำกัดที่อนุญาตตามที่ระบุไว้สำหรับ Request/response size ใน ขีดจำกัดของ Apigee Edge

  1. หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ ขีดจำกัดสูงสุดสำหรับขนาดเพย์โหลดของคำขอและการตอบกลับจะเป็นไปตามที่ระบุไว้สำหรับ Request/response size ใน ขีดจำกัดของ Apigee Edge
  2. หากคุณเป็นผู้ใช้ Private Cloud คุณอาจได้แก้ไขขีดจำกัดสูงสุดเริ่มต้น สำหรับขนาดเพย์โหลดของคำขอและการตอบกลับ (แม้ว่าเราจะไม่แนะนำให้ทำเช่นนั้น) คุณกำหนดขีดจำกัดขนาดเพย์โหลดคำขอสูงสุดได้โดยทำตามวิธีการใน วิธีตรวจสอบขีดจำกัดปัจจุบัน

วิธีตรวจสอบโควต้าปัจจุบัน

ส่วนนี้อธิบายวิธียืนยันว่าพร็อพเพอร์ตี้ HTTPResponse.body.buffer.limit ได้รับการอัปเดตด้วยค่าใหม่ในเครื่องมือประมวลผลข้อความ แล้ว

  1. ในเครื่อง Message Processor ให้ค้นหาพร็อพเพอร์ตี้ HTTPResponse.body.buffer.limit ในไดเรกทอรี /opt/apigee/edge-message- processor/conf แล้วตรวจสอบว่ามีการตั้งค่าใดไว้ดังที่แสดงด้านล่าง

    grep -ri "HTTPResponse.body.buffer.limit" /opt/apigee/edge-message-processor/conf
    
  2. ผลลัพธ์ตัวอย่างจากคำสั่งข้างต้นมีดังนี้

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.body.buffer.limit=10m
  3. ในเอาต์พุตตัวอย่างด้านบน โปรดสังเกตว่าพร็อพเพอร์ตี้ HTTPResponse.body.buffer.limit ได้รับการตั้งค่าด้วยค่า 10m ใน http.properties

    ซึ่งหมายความว่าขีดจำกัดขนาดเพย์โหลดของคำขอที่กำหนดค่าใน Apigee สำหรับ Private Cloud คือ 10 MB

หากยังต้องการความช่วยเหลือจากทีมสนับสนุนของ Apigee โปรดไปที่ ต้องรวบรวมข้อมูลการวินิจฉัย

ต้องรวบรวมข้อมูลการวินิจฉัย

รวบรวมข้อมูลการวินิจฉัยต่อไปนี้ แล้วติดต่อทีมสนับสนุน Apigee Edge

หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้

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

หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้

  • ข้อความแสดงข้อผิดพลาดทั้งหมดที่พบสำหรับคำขอที่ไม่สำเร็จ
  • ชื่อองค์กร
  • ชื่อสภาพแวดล้อม
  • แพ็กเกจพร็อกซี API
  • ไฟล์การติดตามสำหรับคำขอ API ที่ล้มเหลว
  • คำสั่ง curl ที่ใช้ในการทำซ้ำข้อผิดพลาด 502
  • เอาต์พุตทั้งหมดของการตอบกลับจากเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์พร้อมกับขนาดของเพย์โหลด
  • บันทึกการเข้าถึง NGINX /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    โดยที่ ORG, ENV และ PORT# จะแทนที่ด้วย ค่าจริง

  • บันทึกของระบบ Message Processor /opt/apigee/var/log/edge-message-processor/logs/system.log