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

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

ลักษณะปัญหา

แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ 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 Monitoring

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

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

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

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

  10. ดูรายละเอียดต่อไปนี้จากหน้าต่างบันทึก
    • รหัสสถานะ: 502
    • แหล่งที่มาของข้อผิดพลาด: target
    • Fault Code: 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. เลือกคำขอที่ล้มเหลว 1 รายการและตรวจสอบการติดตาม
  3. เลื่อนดูการติดตามระยะต่างๆ และค้นหาตำแหน่งที่เกิดข้อผิดพลาด
  4. ไปที่เฟส Error หลังเฟสการตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมายดังที่แสดงด้านล่าง

    จดค่าข้อผิดพลาดจากการติดตามดังนี้

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

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

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

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

    ไม่บีบอัด

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

    จดค่าข้อผิดพลาดจากการติดตามดังนี้

    • ได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย: 200 OK
    • Content-Length (จากส่วนContent-Length): ประมาณ 11 MB

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

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

    จดค่าข้อผิดพลาดจากการติดตามดังนี้

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

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

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

    Trace

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

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

    บันทึกตัวประมวลผลข้อความ

    การใช้บันทึกเครื่องมือประมวลผลข้อความ

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

      /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. ในระหว่างขั้นตอนการยกเลิกการบีบอัด เมื่อผู้ประมวลผลข้อความระบุจำนวนไบต์ที่อ่านทั้งหมดมากกว่า 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 Javaคำขอราคาเสนอ

สำหรับเพย์โหลดที่มีขนาดใหญ่กว่า 10 MB Apigee ขอแนะนำให้ใช้รูปแบบ URL ที่มีการลงนามภายใน Apigee Javaappeal ซึ่งแสดงโดยตัวอย่าง Edge ข้อความไฮไลต์: 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. ในเครื่องโปรแกรมประมวลผลข้อความ ให้ค้นหาพร็อพเพอร์ตี้ 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# ด้วยค่าจริง

  • บันทึกระบบของผู้ประมวลผลข้อความ /opt/apigee/var/log/edge-message-processor/logs/system.log