Function chạy mãi không chịu chết

Lambda chạy 14 phút chỉ để loop chờ kết quả… bill AWS gửi về, cả team muốn khóc!

Serverless hứa hẹn tiết kiệm chi phí, nhưng team viết Lambda loop vô hạn, không set timeout hợp lý, thế là bill AWS tăng vọt như giá Bitcoin. Audit xong, chỉ muốn hỏi: “Sao không ai nhìn CloudWatch?

Khi Lambda loop mãi, bill AWS thành cuốn tiểu thuyết!


Thực trạng: Lambda “cháy tiền”

Thực trạng:  
  • Lambda xử lý batch lớn, loop/await mãi không thoát, chạy gần 15 phút (max timeout).  
  • Không đặt limit bộ nhớ hoặc timeout hợp lý, mỗi function ngốn hàng GB RAM.  
  • Không monitor chi phí, team không biết Lambda nào “ăn tiền” nhiều nhất.
Hệ quả:  
  • Bill tăng vọt: Một Lambda chạy lâu làm chi phí vượt ngân sách.  
  • Performance kém: Xử lý batch lớn làm Lambda chậm, user chờ lâu.  
  • Khó phát hiện: Không monitor, team chỉ biết khi AWS gửi hóa đơn.

Giải pháp: Optimize và monitor chi phí

Để kiểm soát:  
  • Chia nhỏ payload: Xử lý batch lớn bằng cách chia thành nhiều Lambda async (dùng SQS hoặc Step Functions).  
  • Set timeout hợp lý: Đặt timeout nội bộ trong code, ví dụ: 30 giây thay vì 15 phút.  
  • Monitor chi phí: Dùng CloudWatch Metrics và AWS Cost Explorer để bóc tách Lambda “cháy tiền”.

Ví dụ: Chia batch lớn với SQS:
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Events:
        SQSEvent:
          Type: SQS
          Properties:
            Queue: !GetAtt MyQueue.Arn
            BatchSize: 10

🎯 Tóm lại: Serverless không tự động tiết kiệm chi phí. Chia nhỏ payload, set timeout hợp lý, và monitor CloudWatch để tránh bill AWS làm team “khóc thét”.

Post a Comment

Mới hơn Cũ hơn