Sử dụng quá mức tài nguyên

Nguyên nhân

Đây là một lỗi rất hay gặp khi ứng dụng vừa được khởi tạo hoặc đã chạy trong một khoảng thời gian dài. Khi đó mức sử dụng tài nguyên (CPU, Memory) của service có thể sẽ bị tăng và vượt quá mức giới hạn tài nguyên khi sử dụng mà bạn đã cấu hình.

image

Lỗi này thường xảy ra khi:

  • Cấu hình bạn chọn ngay từ ban đầu quá thấp

    Ví dụ: Một service chạy MySQL khi khởi chạy sẽ yêu cầu ~400MB Memory nên nếu bạn chỉ chọn plan 0.1CPU-300MB Memory thì service sẽ không thể khởi động và lỗi.

  • Ứng dụng bị leak memmory

    Ví dụ: Leak memory là hình thức ứng dụng chạy bị tăng dần memory theo thời gian, dần dần dẫn tới đạt ngưỡng giới hạn. Để khắc phục ta cần tìm ra nguyên nhân tại code và khắc phục.

Cách phát hiện

image

Bạn có thể theo dõi mức độ sử dụng tài nguyên của service ở trong phần Monitoring.

Ví dụ như trong ảnh trên, memory giới hạn là 300MB nhưng dịch vụ đã sử dụng lên hơn 500MB. Việc này khiến ứng dụng không thể khởi động được thành công.

Ngoài ra CPU cũng đang được sử dụng quá tải (full 100%), đây cũng có thể là một lý do khiến service chạy không như ý muốn.

Khắc phục

Để khắc phục trường hợp này ta cần phân biệt được lỗi do ứng dụng thiếu tài nguyên hay bị các vấn đề như leak memory.

  • Nếu do bạn cung cấp quá ít tài nguyên cho service thì để khắc phục chỉ cần đơn giản tăng cấu hình của service đó lên tại đây. Thay đổi cấu hình service

  • Nếu là leak memory bạn sẽ cần phải sửa lại code cho phù hợp, việc tăng cấu hình sẽ chỉ hỗ trợ tạm thời mà không khắc phục được triệt để.