0Pricing
AWS Solutions Architect · บทเรียน

การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้

ทำความเข้าใจว่า Lambda ปรับขนาดการทำงานพร้อมกันอย่างไร กำหนดการทำงานพร้อมกันที่จองไว้เพื่อปกป้องบริการปลายทาง และจัดการข้อผิดพลาดจากการจำกัดอัตรา

การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้ เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

Lambda ปรับขนาดการทำงานพร้อมกันอย่างไร

Lambda ปรับขนาดโดยเรียกใช้ฟังก์ชันของคุณแบบ การดำเนินการพร้อมกัน หลายรายการ โดยมีหนึ่งรายการต่อเหตุการณ์ที่เกิดขึ้นพร้อมกัน หากมีคำขอเข้ามาพร้อมกัน 100 รายการ Lambda จะเรียกใช้อินสแตนซ์ฟังก์ชันของคุณแบบขนาน 100 รายการ AWS จะจัดการโครงสร้างพื้นฐานเบื้องหลังให้โดยอัตโนมัติ ขีดจำกัดการทำงานพร้อมกันระดับบัญชีมีค่าเริ่มต้น 1,000 การดำเนินการพร้อมกันต่อรีเจียน (เป็นขีดจำกัดแบบผ่อนปรนและสามารถเพิ่มได้โดยส่งคำขอโควตาบริการ)

การคำนวณการทำงานพร้อมกัน

การทำงานพร้อมกันคำนวณได้ดังนี้: การทำงานพร้อมกัน = คำขอต่อวินาที × ระยะเวลาเฉลี่ยเป็นวินาที หากฟังก์ชันของคุณจัดการคำขอ 500 รายการต่อวินาที และแต่ละรายการใช้เวลา 0.2 วินาที คุณจะต้องมีการดำเนินการพร้อมกัน 100 รายการ การเข้าใจสูตรนี้ช่วยให้คุณคาดการณ์ได้ว่าขีดจำกัดบัญชีเพียงพอหรือไม่ และจำเป็นต้องขอเพิ่มโควตาก่อนเหตุการณ์ที่มีการใช้งานสูงหรือไม่

# Example concurrency calculation
# RPS = 500, avg_duration = 0.2s
# Concurrency = 500 * 0.2 = 100

# To check current concurrency limits:
aws lambda get-account-settings

การจำกัดการทำงาน: จะเกิดอะไรขึ้นเมื่อถึงขีดจำกัด

เมื่อ Lambda ได้รับคำขอมากกว่าที่ขีดจำกัดการทำงานพร้อมกันอนุญาต ระบบจะ จำกัดการทำงานของคำขอส่วนเกิน สำหรับการเรียกใช้แบบ ซิงโครนัส (เช่น API Gateway) คำขอที่ถูกจำกัดจะได้รับ 429 TooManyRequestsException ทันที และผู้เรียกต้องจัดการกับข้อผิดพลาดนี้ สำหรับการเรียกใช้แบบ อะซิงโครนัส (เช่น เหตุการณ์จาก S3) Lambda จะจัดคิวเหตุการณ์และลองใหม่เป็นเวลาสูงสุด 6 ชั่วโมง ก่อนส่งไปยังคิวจดหมายตาย

อธิบายการทำงานพร้อมกันที่สงวนไว้

การทำงานพร้อมกันที่สงวนไว้รับประกันจำนวนการดำเนินการพร้อมกันที่ระบุสำหรับฟังก์ชันหนึ่ง ๆ โดยกันจำนวนดังกล่าวออกจากกลุ่มทรัพยากรของบัญชี แนวคิดนี้มีวัตถุประสงค์สองประการ: (1) รับประกันความจุ ฟังก์ชันจะมีการดำเนินการตามจำนวนนั้นพร้อมใช้งานเสมอ แม้ว่าฟังก์ชันอื่นจะใช้โควตาบัญชีอยู่ และ (2) จำกัดการทำงานพร้อมกัน ฟังก์ชันจะไม่สามารถเกินจำนวนที่สงวนไว้ได้ จึงช่วยป้องกันไม่ให้การพึ่งพาที่อยู่ปลายทางทำงานหนักเกินไป

# Reserve 100 concurrent executions for a critical function
aws lambda put-function-concurrency \
  --function-name 'CriticalProcessor' \
  --reserved-concurrent-executions 100

ปกป้องบริการปลายทางด้วยการทำงานพร้อมกันที่สงวนไว้

สถานการณ์สำคัญที่มักพบในการสอบ: ฟังก์ชัน Lambda เขียนข้อมูลไปยังฐานข้อมูล RDS ที่จำกัดการเชื่อมต่อไว้ 50 รายการ หากไม่มีการควบคุมการทำงานพร้อมกัน Lambda อาจปรับขนาดไปจนมีการดำเนินการพร้อมกันหลายร้อยรายการและใช้การเชื่อมต่อฐานข้อมูลจนหมด ทำให้ทุกฟังก์ชันเกิดข้อผิดพลาด การตั้งค่าการทำงานพร้อมกันที่สงวนไว้เป็น 40 ทำให้ Lambda ไม่สามารถใช้การเชื่อมต่อฐานข้อมูลพร้อมกันเกิน 40 รายการ จึงช่วยปกป้องอินสแตนซ์ RDS รูปแบบนี้มีความสำคัญสำหรับฟังก์ชัน Lambda ที่เรียกใช้บริการซึ่งจำกัดจำนวนการเชื่อมต่อ

การทำงานพร้อมกันที่จัดเตรียมไว้เพื่อกำจัดการเริ่มทำงานแบบเย็น

การทำงานพร้อมกันที่จัดเตรียมไว้จะเริ่มต้นสภาพแวดล้อมการดำเนินการของ Lambda ตามจำนวนที่ระบุไว้ล่วงหน้า เพื่อให้พร้อมตอบสนอง ทันทีโดยไม่ต้องเริ่มทำงานแบบเย็น แนวคิดนี้สำคัญอย่างยิ่งสำหรับ API ที่ไวต่อเวลาแฝง ซึ่งยอมรับแม้แต่การเริ่มทำงานแบบเย็น 100 มิลลิวินาทีไม่ได้ คุณต้องจ่ายค่าการทำงานพร้อมกันที่จัดเตรียมไว้เป็นรายชั่วโมง แม้สภาพแวดล้อมเหล่านั้นจะไม่มีการใช้งาน ดังนั้นควรใช้ร่วมกับ Auto Scaling เพื่อปรับระดับที่จัดเตรียมไว้ตามรูปแบบปริมาณการใช้งานที่คาดการณ์ไว้

aws lambda put-provisioned-concurrency-config \
  --function-name 'LatencySensitiveAPI' \
  --qualifier 'prod' \
  --provisioned-concurrent-executions 50

การทำงานพร้อมกันที่สงวนไว้และที่จัดเตรียมไว้

แนวคิดสองอย่างนี้มักสับสนกัน แต่มีวัตถุประสงค์ต่างกัน การทำงานพร้อมกันที่สงวนไว้จะจำกัดและรับประกันการจัดสรรความจุจากกลุ่มทรัพยากรของบัญชี โดย ไม่กำจัดการเริ่มทำงานแบบเย็น ส่วน การทำงานพร้อมกันที่จัดเตรียมไว้จะเตรียมสภาพแวดล้อมการดำเนินการให้อุ่นไว้ล่วงหน้าเพื่อกำจัดการเริ่มทำงานแบบเย็น โดย ไม่ป้องกันไม่ให้ฟังก์ชันอื่นใช้กลุ่มทรัพยากรเดียวกัน ใช้การทำงานพร้อมกันที่สงวนไว้เพื่อจำกัดอัตราการประมวลผล และใช้การทำงานพร้อมกันที่จัดเตรียมไว้เพื่อปรับปรุงเวลาแฝง คุณสามารถใช้ทั้งสองแบบร่วมกันกับฟังก์ชันเดียวกันได้

ขีดจำกัดการเพิ่มแบบฉับพลันและการปรับขนาดเริ่มต้น

Lambda ไม่ได้ปรับขนาดจนถึงการทำงานพร้อมกันเต็มระดับได้ทันที แต่มี ขีดจำกัดการเพิ่มแบบฉับพลันระดับบัญชี (อัตราการปรับขนาดเริ่มต้น) ซึ่งแตกต่างกันตามรีเจียน โดยทั่วไปจะเพิ่มแบบฉับพลันเริ่มต้น 3,000 รายการ จากนั้นเพิ่มการดำเนินการอีก 500 รายการต่อนาทีจนถึงขีดจำกัด สำหรับแอปพลิเคชันที่คาดว่าจะมีปริมาณการใช้งานพุ่งขึ้นอย่างมหาศาลในทันที (การเข้าชมแบบไวรัล การลดราคาฉับพลัน) ให้ใช้ การทำงานพร้อมกันที่จัดเตรียมไว้เพื่อเตรียมสภาพแวดล้อมให้เพียงพอ เพื่อไม่ให้ขีดจำกัดการเพิ่มแบบฉับพลันทำให้เกิดการจำกัดการทำงานระหว่างช่วงพุ่งขึ้นเริ่มต้น

ตัวชี้วัดการทำงานพร้อมกันของ Lambda ใน CloudWatch

ตรวจสอบการทำงานพร้อมกันของ Lambda ด้วยตัวชี้วัดสำคัญของ CloudWatch ต่อไปนี้:

  • ConcurrentExecutions: จำนวนอินสแตนซ์ที่กำลังทำงานอยู่ในปัจจุบัน
  • Throttles: จำนวนการเรียกใช้ที่ถูกจำกัด (ระบบที่ทำงานปกติควรมีค่าเป็นศูนย์)
  • UnreservedConcurrentExecutions: กลุ่มทรัพยากรที่ไม่ได้สงวนไว้ระดับบัญชี
  • ProvisionedConcurrencyUtilization: ปริมาณความจุที่จัดเตรียมไว้ซึ่งกำลังใช้งาน

ตั้งการแจ้งเตือนบน Throttles เพื่อรับการแจ้งเตือนก่อนที่การจำกัดการทำงานจะส่งผลกระทบต่อผู้ใช้ปลายทาง

aws cloudwatch put-metric-alarm \
  --alarm-name 'LambdaThrottlesAlert' \
  --metric-name Throttles \
  --namespace AWS/Lambda \
  --dimensions Name=FunctionName,Value=MyFunction \
  --statistic Sum \
  --period 60 \
  --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1

การจัดการการจำกัดการทำงานในโค้ดแอปพลิเคชัน

เมื่อออกแบบระบบที่เรียกใช้ Lambda แบบซิงโครนัส (API Gateway และการเรียกโดยตรงผ่าน SDK) ให้ใช้ การหน่วงแบบทวีคูณร่วมกับความแปรผันแบบสุ่มในฝั่งผู้เรียก SDK ของ AWS มีตรรกะการลองใหม่ในตัว แต่สำหรับ Lambda ที่อยู่หลัง API Gateway คุณต้องจัดการการตอบกลับ 429 ในแอปพลิเคชันไคลเอ็นต์ของคุณเอง สำหรับ Lambda ที่มี SQS เป็นตัวกระตุ้น บริการ SQS จะจัดการการลองใหม่เอง ให้ตั้งค่า จำนวนครั้งการรับสูงสุดของคิวต้นทางอย่างเหมาะสม และกำหนดค่า DLQ สำหรับการลองใหม่ที่ครบจำนวนแล้ว

การทำงานพร้อมกันและตัวกระตุ้นแบบสตรีม

สำหรับ Kinesis Data Streams และ DynamoDB Streams การทำงานพร้อมกันของ Lambda จะถูกจำกัดด้วยจำนวน ชาร์ด (Kinesis) หรือ พาร์ทิชัน (DynamoDB) แต่ละชาร์ด/พาร์ทิชันจะถูกประมวลผลโดยการดำเนินการ Lambda พร้อมกันเพียงรายการเดียว หากคุณมีชาร์ด Kinesis 10 ชาร์ด Lambda จะเรียกใช้การดำเนินการพร้อมกันได้สูงสุด 10 รายการสำหรับตัวกระตุ้นนั้น ดังนั้นปัญหาการจำกัดการทำงานของตัวกระตุ้นแบบสตรีมมักแก้ไขด้วยการเพิ่มจำนวนชาร์ด แทนที่จะเพิ่มขีดจำกัดการทำงานพร้อมกัน

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า การทำงานพร้อมกันที่สงวนไว้ทั้งรับประกันและจำกัดการดำเนินการพร้อมกันของฟังก์ชัน เพื่อปกป้องบริการปลายทางและรับรองความพร้อมใช้งาน การทำงานพร้อมกันที่จัดเตรียมไว้จะเริ่มต้นสภาพแวดล้อมล่วงหน้าเพื่อกำจัดการเริ่มทำงานแบบเย็นสำหรับงานที่ไวต่อเวลาแฝง และ การจำกัดการทำงานจะแสดงเป็นข้อผิดพลาด 429 สำหรับการเรียกใช้แบบซิงโครนัส และเป็นการลองใหม่ที่ถูกจัดคิวสำหรับการเรียกใช้แบบอะซิงโครนัส โดยตรวจสอบผ่านตัวชี้วัด Throttles ของ CloudWatch บทถัดไปเราจะสำรวจ Lambda Layers และแพ็กเกจสำหรับการนำไปใช้งานเพื่อจัดการการพึ่งพาขนาดใหญ่

คำถามที่พบบ่อย

บทเรียน “การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้”

ทำความเข้าใจว่า Lambda ปรับขนาดการทำงานพร้อมกันอย่างไร กำหนดการทำงานพร้อมกันที่จองไว้เพื่อปกป้องบริการปลายทาง และจัดการข้อผิดพลาดจากการจำกัดอัตรา คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ฟังก์ชัน Lambda: รันไทม์ ทริกเกอร์ และตัวจัดการ
  2. การทำงานพร้อมกัน การจำกัดอัตรา และการทำงานพร้อมกันที่จองไว้
  3. เลเยอร์ Lambda และแพ็กเกจการนำไปใช้งาน
  4. Lambda@Edge และรูปแบบที่ขับเคลื่อนด้วยเหตุการณ์
← กลับไปที่ AWS Solutions Architect