Tôi đã gặp sự cố đang diễn ra khi chạy ứng dụng web java Tomcat trong bộ chứa docker (mà tôi gọi là 'tác vụ' trong bài đăng này) được lưu trữ trong ECS (dịch vụ bộ chứa đàn hồi) trên AWS.
Chúng tôi nhận thấy rằng tác vụ tăng mức sử dụng CPU lên tới 97% (sử dụng số liệu AWS) và mặc dù đôi khi tác vụ tự tăng trở lại mức sử dụng CPU thấp hơn, nhưng tác vụ thường chỉ tắt.
May mắn thay, ECS tạo ra một tác vụ docker mới và khởi động lại ứng dụng (mặc dù, phải mất 5-10 phút để mọi thứ trực tuyến trở lại, đây là một khoảng thời gian rất lớn trong ngày sản xuất của chúng tôi!)
Chúng tôi không có bất kỳ giới hạn trên nào đối với tác vụ ECS được định cấu hình (có lẽ chúng tôi nên làm vậy?) â â trong một dự án trước đây, chúng tôi đã tăng CPU trên máy chủ ECS từ 8 vCPU lên 32 vCPU và chắc chắn rằng docker cụ thể này tác vụ liên tục tăng lên 97% CPU máy chủ ECS trong suốt dự án.
Tuần này chúng tôi đã tăng CPU từ 8 vCPU lên 16 vCPU (và bộ nhớ 64 GB).
Và đang nhìn thấy điều tương tự. Tôi đã tăng giới hạn bộ nhớ mềm của tác vụ lên 4 GB (ban đầu nó được đặt thành 2 GB) và tôi có thể thấy mức sử dụng bộ nhớ tăng lên nhưng chắc chắn không vượt quá khoảng 6 GB.
Đi theo dấu vết ngăn xếp, (quá dài để đăng), không có lỗi Hết bộ nhớ nào được ứng dụng tomcat/java ghi lại.
Nó thường bắt đầu với một lỗi JDBC (kết nối tối đa/hết nhóm), sau đó mọi thứ bị hủy đăng ký, hệ thống ghi nhật ký bị tắt, v.v.
Máy chủ ECS có tắt tác vụ hay tác vụ tự tắt sau khi đạt đến giới hạn CPU/bộ nhớ (java/tomcat tự tắt)? Ngoài ra, trong nhật ký đại lý ECS của chúng tôi, tôi có thể thấy một tuyên bố về 'Lối ra 143' -- đây có phải là việc chấm dứt nhiệm vụ từ ECS hay chính vùng chứa đang thoát ra không? Tốt nhất là đặt giới hạn CPU cao hơn cho tác vụ (liên quan đến bộ nhớ JVM, sử dụng bất cứ thứ gì có sẵn cho nó)?