คุณกำลังดูเอกสารประกอบของ 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
- ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
เปลี่ยนไปใช้องค์กรที่คุณต้องการตรวจสอบปัญหา
- ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
- เลือกกรอบเวลาที่เฉพาะเจาะจงซึ่งคุณพบข้อผิดพลาด
- คุณอาจเลือกตัวกรองพร็อกซีเพื่อจำกัดรหัสข้อผิดพลาดให้แคบลง
- พล็อตรหัสข้อบกพร่องเทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อบกพร่อง
protocol.http.TooBigBodyดังที่ แสดงด้านล่าง
คุณจะเห็นข้อมูลเกี่ยวกับรหัสข้อบกพร่อง
protocol.http.TooBigBodyดังที่แสดงด้านล่าง
คลิกดูบันทึก แล้วขยายแถวสำหรับคำขอที่ไม่สำเร็จ
- จากหน้าต่างบันทึก ให้จดรายละเอียดต่อไปนี้
- รหัสสถานะ:
502 - แหล่งที่มาของข้อผิดพลาด:
target - รหัสข้อบกพร่อง:
protocol.http.TooBigBody
- รหัสสถานะ:
- หาก Fault Source มีค่า
targetและ Fault Code มีค่าprotocol.http.TooBigBodyแสดงว่าการตอบกลับ HTTP จากเซิร์ฟเวอร์เป้าหมาย/ แบ็กเอนด์มีขนาดเพย์โหลดการตอบกลับมากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
Trace
วิธีวิเคราะห์ข้อผิดพลาดโดยใช้เครื่องมือติดตาม
- เปิดใช้เซสชันการติดตามและทำอย่างใดอย่างหนึ่งต่อไปนี้
- รอให้เกิดข้อผิดพลาด
502 Bad Gatewayหรือ - หากทำให้เกิดปัญหาซ้ำได้ ให้ทำการเรียก API และทำให้เกิด
502 Bad Gatewayข้อผิดพลาดซ้ำ
- รอให้เกิดข้อผิดพลาด
- เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง แล้วตรวจสอบการติดตาม
- ไปยังส่วนต่างๆ ของการติดตาม และค้นหาจุดที่เกิดข้อผิดพลาด
ไปที่เฟสข้อผิดพลาดหลังจากเฟสได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย ดังที่แสดงด้านล่าง
จดค่าของข้อผิดพลาดจากร่องรอย
- ข้อผิดพลาด:
Body buffer overflow - error.class:
com.apigee.errors.http.server.BadGateway
ซึ่งบ่งชี้ว่า Apigee Edge (คอมโพเนนต์ Message Processor) แสดงข้อผิดพลาดทันทีที่ ได้รับคำตอบจากเซิร์ฟเวอร์แบ็กเอนด์เนื่องจากขนาดเพย์โหลดเกินขีดจำกัดที่อนุญาต
- ข้อผิดพลาด:
คุณจะเห็นความล้มเหลวในระยะส่งการตอบกลับไปยังไคลเอ็นต์ดังที่แสดงด้านล่าง
- จดค่าของข้อผิดพลาดจากร่องรอย การติดตามตัวอย่างข้างต้นแสดงข้อมูลต่อไปนี้
- ข้อผิดพลาด:
502 Bad Gateway - เนื้อหาข้อผิดพลาด:
{"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
- ข้อผิดพลาด:
ไปที่ระยะได้รับการตอบกลับจากเซิร์ฟเวอร์เป้าหมายตามที่แสดงด้านล่างสำหรับสถานการณ์ต่างๆ
ไม่มีการบีบอัด
สถานการณ์ #1: ส่งเพย์โหลดการตอบกลับในรูปแบบที่ไม่ได้บีบอัด
จดค่าของข้อผิดพลาดจากร่องรอย
- การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย:
200 OK - Content-Length (จากส่วนส่วนหัวของการตอบกลับ): ~11MB
ขนาดไฟล์ที่บีบอัด
สถานการณ์ #2: ส่งเพย์โหลดคำขอในรูปแบบที่บีบอัด
จดค่าของข้อผิดพลาดจากร่องรอย
- การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย:
200 OK - Content-Encoding: หากเห็นส่วนหัวนี้ในส่วนส่วนหัวของการตอบกลับ
ให้จดค่าไว้ เช่น ในตัวอย่างนี้ ค่าคือ
gzip
- การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย:
โปรดทราบเนื้อหาในส่วนเนื้อหาการตอบกลับ
{"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}ไปที่เฟส AX (บันทึกข้อมูลวิเคราะห์) ในการติดตาม แล้วคลิกเพื่อดูรายละเอียดที่เกี่ยวข้อง
- เลื่อนลงในรายละเอียดระยะไปที่ส่วนอ่านตัวแปร แล้วกำหนดค่า
ของ
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 ตารางต่อไปนี้อธิบายสาเหตุที่ Apigee แสดงข้อผิดพลาด
502ใน 2 สถานการณ์ตามค่าของ target.received.content.lengthสถานการณ์ ค่าของ target.received.content.length สาเหตุที่ทำให้ย้ายข้อมูลไม่สำเร็จ เพย์โหลดการตอบกลับในรูปแบบที่ไม่มีการบีบอัด ~11 MB ขนาดใหญ่กว่าขีดจำกัดที่อนุญาต 10 MB เพย์โหลดการตอบกลับในรูปแบบที่บีบอัด ~10 MB ขนาดเกินขีดจำกัดเมื่อคลายการบีบอัด
NGINX
วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX
- หากเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกการเข้าถึง NGINX เพื่อระบุข้อมูลสำคัญเกี่ยวกับข้อผิดพลาด HTTP
502ได้ ตรวจสอบบันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
ตำแหน่ง: ORG, ENV และ PORT# จะถูกแทนที่ด้วยค่าจริง
- ค้นหาเพื่อดูว่ามี
502ข้อผิดพลาดในช่วงระยะเวลาที่เฉพาะเจาะจง (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอที่ยังคงล้มเหลวด้วย502หรือไม่ - หากพบ
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.TooBigBodyX-Apigee-fault-source target
สาเหตุ: ขนาดเพย์โหลดการตอบกลับใหญ่กว่าขีดจำกัดที่อนุญาต
การวินิจฉัย
- ระบุรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด และขนาดเพย์โหลดการตอบกลับสำหรับ ข้อผิดพลาดที่สังเกตได้โดยใช้การตรวจสอบ API, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไปในสถานการณ์ #1
- หากแหล่งที่มาของข้อผิดพลาดมีค่า
targetแสดงว่าขนาดเพย์โหลดของคำตอบที่เซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ส่งไปยัง Apigee มีขนาดมากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge - ยืนยันขนาด Payload ของการตอบกลับตามที่กำหนดจากขั้นตอนที่ 1
- หากขนาดเพย์โหลด > ขีดจำกัดที่อนุญาต 10 MB แสดงว่านั่นคือสาเหตุของข้อผิดพลาด
- หากขนาดเพย์โหลดมีขนาดประมาณ 10 MB ตามขีดจำกัดที่อนุญาต แสดงว่าอาจมีการส่งเพย์โหลดการตอบกลับในรูปแบบที่บีบอัด ไปที่ สาเหตุ: เพย์โหลดการตอบกลับมีขนาดเกินขีดจำกัดที่อนุญาตหลังจากคลายการบีบอัด
- ตรวจสอบว่าขนาดเพย์โหลดการตอบกลับมีขนาด > 10 MB ตามขีดจำกัดที่อนุญาตจริงโดยทำตามขั้นตอนต่อไปนี้เพื่อตรวจสอบการตอบกลับจริง
- หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ไปที่การแก้ปัญหา
- หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ทำตามขั้นตอนต่อไปนี้
- หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ/ระบบคลาวด์ส่วนตัว ให้ส่งคำขอไปยัง เซิร์ฟเวอร์แบ็กเอนด์โดยตรงจากเซิร์ฟเวอร์แบ็กเอนด์เองหรือเครื่องอื่นๆ ที่คุณ ได้รับอนุญาตให้ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
- หากเป็นผู้ใช้ Private Cloud คุณยังส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์จากตัวประมวลผลข้อความตัวใดตัวหนึ่งได้ด้วย
- ตรวจสอบขนาดของเพย์โหลดที่ส่งในการตอบกลับโดยดูที่ ส่วนหัว Content-Length
- หากพบว่าเพย์โหลดมีขนาดเกิน ขีดจำกัดที่อนุญาตใน 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
การวินิจฉัย
- ระบุรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด และขนาดเพย์โหลดการตอบกลับสำหรับ ข้อผิดพลาดที่สังเกตได้โดยใช้การตรวจสอบ API, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไปในสถานการณ์ #2
- หาก Fault Source มีค่าเป็น
targetแสดงว่าขนาดเพย์โหลดการตอบกลับที่แอปพลิเคชันเป้าหมาย/แบ็กเอนด์ส่งไปยัง Apigee มากกว่า ขีดจำกัดที่อนุญาตใน Apigee Edge - ยืนยันขนาด Payload ของการตอบกลับตามที่กำหนดจากขั้นตอนที่ 1
- หากขนาดเพย์โหลด > ขีดจำกัดที่อนุญาต 10 MB แสดงว่านั่นคือสาเหตุของข้อผิดพลาด
- หากขนาดเพย์โหลดเป็นไปตามขีดจำกัดที่อนุญาตประมาณ 10 MB แสดงว่าเพย์โหลดการตอบกลับอาจ ส่งในรูปแบบที่บีบอัด ในกรณีนี้ ให้ตรวจสอบขนาดที่ไม่ได้บีบอัดของเพย์โหลดการตอบกลับที่บีบอัด แล้ว
- คุณสามารถตรวจสอบว่าการตอบกลับจากเป้าหมาย/แบ็กเอนด์ถูกส่งในรูปแบบที่บีบอัดหรือไม่ และ
ขนาดที่ไม่ได้บีบอัดมีขนาดใหญ่กว่าขีดจำกัดที่อนุญาตหรือไม่ โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
Trace
การใช้เครื่องมือติดตาม:
- หากคุณบันทึกการติดตามสำหรับคำขอที่ไม่สำเร็จ โปรดดูขั้นตอนโดยละเอียดใน
Trace และ
- กำหนดค่าของ target.received.content.length
- ตรวจสอบว่าคำขอจากไคลเอ็นต์มีส่วนหัว
Content-Encoding:
gzipหรือไม่
- หากค่าของ target.received.content.length อยู่ที่ประมาณ 10 MB ซึ่งเป็นขีดจำกัดที่อนุญาต และส่วนหัวการตอบกลับคือ Content-Encoding:
gzipนั่นคือ สาเหตุของข้อผิดพลาดนี้
คำขอจริง
การใช้คำขอจริง:
- หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ไปที่การแก้ปัญหา
- หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ทำตามขั้นตอนต่อไปนี้
- ยืนยันขนาดของเพย์โหลดที่ส่งในการตอบกลับพร้อมกับ
Content-Encodingส่วนหัวที่ส่งในการตอบกลับ - หากพบว่าส่วนหัวการตอบกลับ
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
- หากคุณเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกของ Message Processor เพื่อ
ระบุข้อมูลสำคัญเกี่ยวกับข้อผิดพลาด HTTP
502ได้ ตรวจสอบบันทึกของ Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.logค้นหาเพื่อดูว่ามี
502ข้อผิดพลาดในช่วงระยะเวลาที่เฉพาะเจาะจง (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอที่ยังคงล้มเหลวด้วย502หรือไม่ คุณอาจใช้สตริงการค้นหาต่อไปนี้grep -ri "chunkCount"
grep -ri "BadGateway: Body buffer overflow"
- คุณจะเห็นบรรทัดจาก
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)
ในระหว่างกระบวนการคลายการบีบอัด ทันทีที่ Message Processor ระบุว่าไบต์ที่อ่านทั้งหมดมีค่ามากกว่า 10 MB ระบบจะหยุดและพิมพ์บรรทัดต่อไปนี้
Message is too large. TotalRead 10489856 chunkCount 2571ซึ่งหมายความว่า ขนาดเพย์โหลดการตอบกลับมีขนาดมากกว่า 10 MB และ Apigee จะแสดงข้อผิดพลาดเมื่อขนาดเริ่มเกินขีดจำกัด 10 MB โดยมีรหัสข้อผิดพลาดเป็น
protocol.http.TooBigBody
- หากคุณบันทึกการติดตามสำหรับคำขอที่ไม่สำเร็จ โปรดดูขั้นตอนโดยละเอียดใน
Trace และ
ความละเอียด
แก้ไขขนาด
ตัวเลือกที่ 1 [แนะนำ]: แก้ไขแอปพลิเคชันเซิร์ฟเวอร์เป้าหมายไม่ให้ส่งขนาดเพย์โหลดเกินขีดจำกัดของ Apigee
- วิเคราะห์สาเหตุที่เซิร์ฟเวอร์เป้าหมายเฉพาะส่งการตอบกลับ / ขนาดเพย์โหลด เกินขีดจำกัดที่อนุญาตตามที่กำหนดไว้ใน ขีดจำกัด
- หากไม่ต้องการ ให้แก้ไขแอปพลิเคชันเซิร์ฟเวอร์เป้าหมายเพื่อให้ส่งขนาดการตอบกลับ / เพย์โหลดน้อยกว่าขีดจำกัดที่อนุญาต
- หากต้องการส่งการตอบกลับ/เพย์โหลดเกินขีดจำกัดที่อนุญาต ให้ไปที่ตัวเลือกถัดไป
รูปแบบ 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
- หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ ขีดจำกัดสูงสุดสำหรับขนาดเพย์โหลดของคำขอและการตอบกลับจะเป็นไปตามที่ระบุไว้สำหรับ
Request/response sizeใน ขีดจำกัดของ Apigee Edge - หากคุณเป็นผู้ใช้ Private Cloud คุณอาจได้แก้ไขขีดจำกัดสูงสุดเริ่มต้น สำหรับขนาดเพย์โหลดของคำขอและการตอบกลับ (แม้ว่าเราจะไม่แนะนำให้ทำเช่นนั้น) คุณกำหนดขีดจำกัดขนาดเพย์โหลดคำขอสูงสุดได้โดยทำตามวิธีการใน วิธีตรวจสอบขีดจำกัดปัจจุบัน
วิธีตรวจสอบโควต้าปัจจุบัน
ส่วนนี้อธิบายวิธียืนยันว่าพร็อพเพอร์ตี้
HTTPResponse.body.buffer.limit ได้รับการอัปเดตด้วยค่าใหม่ในเครื่องมือประมวลผลข้อความ
แล้ว
ในเครื่อง Message Processor ให้ค้นหาพร็อพเพอร์ตี้
HTTPResponse.body.buffer.limitในไดเรกทอรี/opt/apigee/edge-message- processor/confแล้วตรวจสอบว่ามีการตั้งค่าใดไว้ดังที่แสดงด้านล่างgrep -ri "HTTPResponse.body.buffer.limit" /opt/apigee/edge-message-processor/conf
ผลลัพธ์ตัวอย่างจากคำสั่งข้างต้นมีดังนี้
/opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.body.buffer.limit=10m
ในเอาต์พุตตัวอย่างด้านบน โปรดสังเกตว่าพร็อพเพอร์ตี้
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