ฟังก์ชัน Lambda ส่งคืนการหมดเวลาแม้ว่าจะได้รับการตอบกลับแล้วก็ตาม

เรามีฟังก์ชัน AWS lambda ที่ใช้ Java ซึ่งถูกเรียกผ่าน API Gateway ประมาณ 10-15 ครั้งต่อวัน ซึ่งน้อยกว่ามากสำหรับฉัน

การกำหนดค่า Lambda มีหน่วยความจำ 1024 MB และจำกัดการหมดเวลา 15 วินาที แต่ในช่วงสัปดาห์ที่ผ่านมา ฟังก์ชันแลมบ์ดาหมดเวลาแม้ว่าจะได้รับการตอบกลับแล้วก็ตาม และเหตุการณ์นี้ไม่สม่ำเสมอ เป็นระยะๆ. และในที่สุดก็ดำเนินการได้ตามปกติหลังจากผ่านไประยะหนึ่ง

เราได้ลองเพิ่มประสิทธิภาพโค้ดแล้ว และไม่ควรใช้เวลานานกว่า ~8 วินาทีในการดำเนินการ หวังว่าจะพบวิธีแก้ปัญหาสำหรับเรื่องนี้ แจ้งให้เราทราบหากต้องการข้อมูลเพิ่มเติม

ขอบคุณล่วงหน้า.

ปัญหาคล้ายกับคำถามนี้: ฟังก์ชัน AWS Lambda หมดเวลา

ข้อแตกต่างเพียงอย่างเดียวคือเทคโนโลยีที่ใช้: คำถามข้างต้นใช้ nodeJS และเราใช้ Java

--อัปเดต: อีกสิ่งหนึ่งที่ฉันสังเกตเห็นคือเมื่อ API ถูกโจมตีหลังจากไม่ได้ใช้งานเป็นเวลานาน จะต้องใช้เวลาในการดำเนินการมากกว่าเมื่อคุณกดมันติดต่อกัน ฉันตรวจสอบบันทึกและเมื่อฉันโจมตีมันเป็นครั้งแรก มันใช้เวลาประมาณ 7-8 วินาทีในการดำเนินการ และหลังจากการโจมตี 2 ครั้งติดต่อกัน เวลาตอบสนองก็ลดลงเหลือเพียง 2 วินาทีเท่านั้น.. แปลกมาก...


person User-8017771    schedule 08.01.2018    source แหล่งที่มา
comment
เวลาที่คุณบอกเป็นเพียงเวลาที่ใช้โดยนิพจน์ Lambda หรือโดย API ทั้งหมดของคุณ   -  person Nikhil Pareek    schedule 08.01.2018
comment
@NikhilPareek แค่แลมบ์ดา .. ไม่ใช่ API   -  person User-8017771    schedule 08.01.2018


คำตอบ (1)


ดูเหมือนว่าคุณจะมีปัญหาเกี่ยวกับการวอร์มอัพบนเกตเวย์ lambda/api มีบางคน บ่นเกี่ยวกับเรื่องนี้

มีวิธีแก้ไขเบื้องต้นที่คุณสามารถทำได้เพื่อให้แลมบ์ดาอบอุ่น ตัวอย่างทริกเกอร์

ฉันตรวจสอบบันทึกและเมื่อฉันโจมตีมันเป็นครั้งแรก มันใช้เวลาประมาณ 7-8 วินาทีในการดำเนินการ และหลังจากการโจมตี 2 ครั้งติดต่อกัน เวลาตอบสนองก็ลดลงเหลือเพียง 2 วินาทีเท่านั้น.. แปลกมาก...

เนื่องจากคุณมีแลมบ์ดาที่อบอุ่น จึงไม่จำเป็นต้องสร้างแลมบ์ดาใหม่

person dege    schedule 08.01.2018
comment
ใช่ นั่นอาจเป็นกรณีที่เกี่ยวกับการวอร์มอัพฟังก์ชันแลมบ์ดา อย่างไรก็ตาม ปัญหาที่ 1 ของฉัน: แต่จากประมาณสัปดาห์ที่ผ่านมา ฟังก์ชันแลมบ์ดาหมดเวลาแม้ว่าจะได้รับการตอบกลับแล้วก็ตาม และเหตุการณ์นี้ไม่สม่ำเสมอ เป็นระยะๆ. และดำเนินการได้ตามปกติในที่สุด มีความคิดบ้างไหมว่าทำไมสิ่งนี้ถึงเกิดขึ้น? - person User-8017771; 08.01.2018
comment
เป็นสถานการณ์ที่แปลก คุณสังเกตเห็นเวลาที่บันทึกการหมดเวลาหรือไม่ และหน่วยความจำที่คุณเลือกสำหรับแลมบ์ดาคืออะไร? - person dege; 08.01.2018
comment
หน่วยความจำที่เลือกคือ 1024 MB การหมดเวลาที่ฉันตรวจสอบจากบันทึกใน Cloud Watch โดยพื้นฐานแล้วเมื่อคำขอถูกส่งไปยังฟังก์ชันแลมบ์ดา ก็จะมีคำขอเริ่มต้นซึ่งถูกบันทึกไว้ และฉันได้เพิ่มตัวบันทึกเมื่อสิ้นสุดการดำเนินการเพื่อตรวจสอบว่าได้รับการตอบกลับหรือไม่ และเครื่องบันทึกนี้จะถูกบันทึกไว้ใน Cloud watch แต่หลังจากเหตุการณ์นี้เกิดขึ้น คำขอจะหมดเวลา ระยะหมดเวลาที่ตั้งไว้คือ 15 วินาที - person User-8017771; 08.01.2018
comment
ดูเหมือนเป็นกรณีแปลก ๆ แลมบ์ดาไม่ควรให้การหมดเวลาหากส่งการตอบกลับ - person dege; 08.01.2018
comment
แน่นอน .. นั่นคือความคิดของฉันเช่นกัน .. แต่คุณจะเห็นได้ว่านี่เป็นปัญหาที่คล้ายกัน: stackoverflow.com/questions/40776264/ ซึ่งมีสแน็ปช็อตให้เช่นกัน - person User-8017771; 09.01.2018