คุณกำลังดูเอกสารประกอบของ 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
- ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
เปลี่ยนเป็นองค์กรที่คุณต้องการตรวจสอบปัญหา
- ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
- เลือกกรอบเวลาเฉพาะที่คุณพบข้อผิดพลาด
- คุณอาจเลือกตัวกรองพร็อกซีเพื่อจำกัดรหัสข้อผิดพลาดให้แคบลง
- พล็อตโค้ดข้อผิดพลาดเทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อผิดพลาด
protocol.http.TooBigBody
ดังที่แสดงด้านล่างคุณจะเห็นข้อมูลเกี่ยวกับรหัสข้อผิดพลาด
protocol.http.TooBigBody
ดังที่แสดงด้านล่างคลิกดูบันทึกแล้วขยายแถวสําหรับคําขอที่ล้มเหลว
- ดูรายละเอียดต่อไปนี้จากหน้าต่างบันทึก
- รหัสสถานะ:
502
- แหล่งที่มาของข้อผิดพลาด:
target
- Fault Code:
protocol.http.TooBigBody
- รหัสสถานะ:
- หาก Fault Source มีค่า
target
และ Fault Code มีค่าprotocol.http.TooBigBody
แสดงว่าการตอบกลับ HTTP จากเซิร์ฟเวอร์เป้าหมาย/ แบ็กเอนด์มีขนาดเพย์โหลดการตอบกลับมากกว่าขีดจำกัดใน Apigee Edge ที่อนุญาต
Trace
วิธีวินิจฉัยข้อผิดพลาดโดยใช้เครื่องมือติดตาม
- เปิดใช้เซสชันการติดตาม แล้วเลือกทําอย่างใดอย่างหนึ่งต่อไปนี้
- รอจนกว่าจะเกิดข้อผิดพลาด
502 Bad Gateway
หรือ - หากคุณทำให้ปัญหาเกิดซ้ำได้ ให้เรียก API และจำลองข้อผิดพลาด
502 Bad Gateway
- รอจนกว่าจะเกิดข้อผิดพลาด
- เลือกคำขอที่ล้มเหลว 1 รายการและตรวจสอบการติดตาม
- เลื่อนดูการติดตามระยะต่างๆ และค้นหาตำแหน่งที่เกิดข้อผิดพลาด
ไปที่เฟส Error หลังเฟสการตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมายดังที่แสดงด้านล่าง
จดค่าข้อผิดพลาดจากการติดตามดังนี้
- ข้อผิดพลาด:
Body buffer overflow
- error.class:
com.apigee.errors.http.server.BadGateway
ซึ่งเป็นการระบุว่า Apigee Edge (คอมโพเนนต์ผู้ประมวลผลข้อความ) แสดงข้อผิดพลาดทันทีที่ได้รับการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์เนื่องจากขนาดของเพย์โหลดเกินขีดจำกัดที่อนุญาต
- ข้อผิดพลาด:
คุณจะเห็นความล้มเหลวในส่วนการตอบกลับที่ส่งไปยังไคลเอ็นต์ ตามที่แสดงด้านล่าง
- บันทึกค่าข้อผิดพลาดจากการติดตาม การติดตามตัวอย่างข้างต้นจะแสดงข้อมูลต่อไปนี้
- ข้อผิดพลาด:
502 Bad Gateway
- เนื้อหาข้อผิดพลาด:
{"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
- ข้อผิดพลาด:
ไปยังเฟสการตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมายตามที่แสดงด้านล่างสำหรับสถานการณ์ต่างๆ
ไม่บีบอัด
สถานการณ์ที่ 1: ส่งเพย์โหลดการตอบกลับในรูปแบบที่ไม่ได้บีบอัด
จดค่าข้อผิดพลาดจากการติดตามดังนี้
- ได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย:
200 OK
- Content-Length (จากส่วนContent-Length): ประมาณ 11 MB
ขนาดไฟล์ที่บีบอัด
สถานการณ์ที่ 2: ส่งเปย์โหลดคำขอในรูปแบบที่บีบอัด
จดค่าข้อผิดพลาดจากการติดตามดังนี้
- ได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย:
200 OK
- Content-Encrypting: หากเห็นส่วนหัวนี้ในส่วน Response Headers
โปรดสังเกตค่า ตัวอย่างเช่น ในตัวอย่างนี้มีค่าเป็น
gzip
- ได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย:
อ่านเนื้อหาในส่วนเนื้อหาการตอบกลับ
{"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
ไปที่เฟส AX (บันทึกข้อมูล Analytics) ในการติดตาม แล้วคลิกเพื่อดูรายละเอียดที่เกี่ยวข้อง
- เลื่อนลงในรายละเอียดระยะไปยังส่วนการอ่านตัวแปร แล้วกำหนดค่าของ
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.TooBigBody
X-Apigee-fault-source target
สาเหตุ: ขนาดของเพย์โหลดการตอบกลับมากกว่าขีดจำกัดที่อนุญาต
การวินิจฉัย
- กำหนดFault Code, Fault Source และขนาดเพย์โหลดการตอบกลับสำหรับข้อผิดพลาดที่สังเกตโดยใช้ API Monitoring, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในขั้นตอนการวินิจฉัยทั่วไปกับสถานการณ์ที่ 1
- หาก Fault Source มีค่า
target
แสดงว่าขนาดเปย์โหลดการตอบกลับที่เซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ส่งไปยัง Apigee สูงกว่าขีดจำกัดที่อนุญาตใน Apigee Edge - ยืนยันขนาดเพย์โหลดการตอบกลับตามที่กําหนดไว้ในขั้นตอนที่ 1
- หากเพย์โหลดมีขนาดมากกว่า 10 MB ที่อนุญาต แสดงว่าเป็นสาเหตุของข้อผิดพลาด
- หากเพย์โหลดมีขนาดประมาณ 10 MB ที่อนุญาต ระบบอาจส่งเพย์โหลดการตอบสนองในรูปแบบที่บีบอัด ไปที่ สาเหตุ: ขนาดเปย์โหลดการตอบกลับเกินขีดจำกัดที่อนุญาตหลังจากการยกเลิกการบีบอัด
- ตรวจสอบว่าขนาดเพย์โหลดการตอบกลับมีขนาดใหญ่กว่า 10 MB ที่อนุญาตจริงหรือไม่ โดยตรวจสอบการตอบกลับจริงโดยทำตามขั้นตอนต่อไปนี้
- หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ไปที่การแก้ไข
- หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ทำตามขั้นตอนต่อไปนี้
- หากคุณเป็นผู้ใช้ Public Cloud/Private Cloud ให้ส่งคำขอไปที่เซิร์ฟเวอร์แบ็กเอนด์โดยตรงจากเซิร์ฟเวอร์แบ็กเอนด์เองหรือเครื่องอื่นที่คุณได้รับอนุญาตให้ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
- หากคุณเป็นผู้ใช้ Private Cloud คุณจะส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์จากผู้ประมวลผลข้อความตัวใดตัวหนึ่งได้ด้วย
- ยืนยันขนาดของเพย์โหลดที่ส่งในการตอบกลับโดยตรวจสอบส่วนหัวความยาวของเนื้อหา
- หากคุณพบว่าขนาดของเพย์โหลดเกินขีดจำกัดที่อนุญาตใน 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
การวินิจฉัย
- ระบุFault Code, Fault Source และขนาดเพย์โหลดการตอบกลับสำหรับข้อผิดพลาดที่สังเกตโดยใช้บันทึก API Monitoring, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในขั้นตอนการวินิจฉัยทั่วไปกับสถานการณ์ #2
- หาก Fault Source มีค่า
target
แสดงว่าขนาดเปย์โหลดการตอบกลับที่แอปพลิเคชันเป้าหมาย/แบ็กเอนด์ส่งไปยัง Apigee นั้นมากกว่า ขีดจํากัดที่อนุญาตใน Apigee Edge - ยืนยันขนาดเพย์โหลดการตอบกลับตามที่กําหนดไว้ในขั้นตอนที่ 1
- หากเพย์โหลดมีขนาดมากกว่า 10 MB ที่อนุญาต แสดงว่าเป็นสาเหตุของข้อผิดพลาด
- หากเพย์โหลดมีขนาดประมาณ 10 MB ที่อนุญาต ระบบอาจส่งเพย์โหลดการตอบกลับในรูปแบบที่บีบอัด ในกรณีนี้ ให้ตรวจสอบขนาดที่ไม่มีการบีบอัดของเพย์โหลดการตอบสนองที่บีบอัด
- คุณตรวจสอบได้ว่าการตอบสนองจากเป้าหมาย/แบ็กเอนด์ส่งในรูปแบบที่บีบอัดหรือไม่ และขนาดที่ไม่ได้บีบอัดใหญ่กว่าขีดจำกัดที่อนุญาตโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
Trace
การใช้เครื่องมือติดตามมีดังนี้
- หากคุณบันทึกการติดตามสำหรับคำขอที่ล้มเหลว โปรดดูขั้นตอนที่อธิบายไว้ใน Trace และ
- ระบุค่าของ target.received.content.length
- ตรวจสอบว่าคำขอจากไคลเอ็นต์มีส่วนหัวการเข้ารหัสเนื้อหา:
gzip
หรือไม่
- หากค่าของ target.received.content.length มีค่าประมาณ 10 MB ที่อนุญาต และส่วนหัวการตอบกลับ Content-Encrypting:
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
- ยืนยันขนาดของเพย์โหลดที่ส่งในการตอบกลับพร้อมกับส่วนหัว
บันทึกตัวประมวลผลข้อความ
การใช้บันทึกเครื่องมือประมวลผลข้อความ
- หากคุณเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกตัวประมวลผลข้อความเพื่อระบุข้อมูลคีย์เกี่ยวกับข้อผิดพลาดของ HTTP
502
ได้ ตรวจสอบบันทึกเครื่องมือประมวลผลข้อความ
/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)
ในระหว่างขั้นตอนการยกเลิกการบีบอัด เมื่อผู้ประมวลผลข้อความระบุจำนวนไบต์ที่อ่านทั้งหมดมากกว่า 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 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
- หากคุณเป็นผู้ใช้ ระบบคลาวด์สาธารณะ ขนาดเปย์โหลดคำขอและการตอบกลับสูงสุดตามที่บันทึกไว้สำหรับ
Request/response size
ใน ขีดจำกัดของ Apigee Edge - หากคุณเป็นผู้ใช้ Private Cloud ก็อาจแก้ไขขีดจำกัดสูงสุดเริ่มต้นสำหรับขนาดเปย์โหลดคำขอและการตอบกลับ (แม้ว่าจะไม่ใช่แนวทางปฏิบัติที่แนะนำก็ตาม) คุณระบุขนาดสูงสุดของเพย์โหลดคำขอได้โดยทำตามวิธีการในวิธีตรวจสอบขีดจำกัดปัจจุบัน
วิธีตรวจสอบขีดจำกัดปัจจุบัน
ส่วนนี้จะอธิบายวิธียืนยันว่าพร็อพเพอร์ตี้ HTTPResponse.body.buffer.limit
ได้รับการอัปเดตด้วยค่าใหม่ในตัวประมวลผลข้อความแล้ว
ในเครื่องโปรแกรมประมวลผลข้อความ ให้ค้นหาพร็อพเพอร์ตี้
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# ด้วยค่าจริง
- บันทึกระบบของผู้ประมวลผลข้อความ
/opt/apigee/var/log/edge-message-processor/logs/system.log