Ba nguyên nhân khác nhau, phải tách ra trước khi sửa.
1. 429 — throttling do hết concurrency. Mỗi region có hạn mức concurrent execution của account. Nếu một function đặt reserved concurrency thấp, nó bị chặn ở đúng ngưỡng đó; nếu không đặt, nó có thể ăn hết hạn mức của cả account và làm function khác bị throttle. Xem metric Throttles và ConcurrentExecutions.
- Cách xử lý: đặt reserved concurrency để cô lập từng function, xin nâng quota, và ở phía client dùng retry có exponential backoff kèm jitter (retry đồng loạt không jitter làm tải dội lại theo chu kỳ).
2. Cold start làm p99 vọt. Khi không còn execution environment rảnh, Lambda phải khởi tạo môi trường mới rồi chạy phần init của code. Ảnh hưởng lớn với runtime khởi động nặng và với function đặt trong VPC có nhiều phụ thuộc khởi tạo.
- Giảm: thu nhỏ gói triển khai, khởi tạo SDK client và connection ở ngoài handler để tái dùng qua các lần gọi warm, tăng memory (memory tăng thì CPU tăng, init nhanh hơn), và dùng provisioned concurrency cho function nhạy latency.
// runs once per execution environment, reused by warm invocations
const db = createPool()
export const handler = async (event) => db.query(...)3. 502 từ API Gateway. Thường không phải "Lambda lỗi" mà là response sai định dạng (thiếu statusCode/body), hoặc Lambda timeout. Nhớ timeout của API Gateway ngắn hơn timeout tối đa của Lambda, nên đặt timeout Lambda thấp hơn timeout của gateway để lỗi hiện ra đúng chỗ, có thông báo rõ ràng.
Cuối cùng: nếu function gọi RDS, số lần chạy đồng thời tăng đồng nghĩa số connection tăng — thường đây mới là nút thắt thật, xử lý bằng RDS Proxy thay vì nâng concurrency.