14

Folks,Giải thích mẫu tiêu thụ bộ nhớ này trong Amazon RDS/Mysql?

Ai đó có thể giải thích mẫu tiêu thụ bộ nhớ này trên Amazon RDS đang chạy Mysql không? Trong biểu đồ này, tôi đã nâng cấp lên db.m2.2xlarge, với 34GB bộ nhớ khả dụng, lúc 03:30. Bạn có thể thấy chuyển đổi rất rõ ràng. Khi khách hàng bắt đầu kết nối và nhấn vào trường hợp đó, bộ nhớ có thể giải phóng giảm xuống đến 5GB, nơi nó hiện đang lơ lửng. Ngày nâng cấp trước đó của tôi giữa các kích thước cá thể DB, tôi thấy cùng một mẫu, cho đến khi bộ nhớ có thể giải phóng giảm xuống dưới 1 GB và di chuột đến đó vô thời hạn.

Trường hợp này diễn ra trong khoảng thời gian từ 03:30 đến 07:30? Tại sao nó không giải phóng bộ nhớ không sử dụng khi nó trở nên có sẵn? Tôi đoán tôi cho rằng biểu đồ này là hình dạng sóng, tương ứng với cách sử dụng và mẫu lưu lượng truy cập, so với hình dạng phân rã theo cấp số mũ, cho thấy đó là thuật toán thu thập rác siêu lười và/hoặc bị hỏng.

Cũng lưu ý rằng khoảng 2/3 hoạt động DB được ghi và 1/3 được đọc và có khoảng 2GB memcache ở phía trước DB.

memory consumption amazon rds mysql

Trả lời

13

MySQL duy trì một bộ nhớ cache của thời gian gần đây sử dụng bảng, truy vấn và kết quả trong bộ nhớ, để trả về kết quả nhanh hơn. Ví dụ: nếu bạn truy vấn "chọn * từ công ty có id = 1" từ ứng dụng khách 1 triệu lần, chỉ truy vấn đầu tiên cần phải chuyển sang đĩa, 999,999 tiếp theo sẽ đến ngay từ bộ đệm RAM. Không có lý do gì để MySQL hết hạn bộ nhớ cache này cho đến khi nó biết nó cần nhiều bộ nhớ hơn, vì vậy nó giữ mọi thứ được lưu cho đến khi nó cần giải phóng RAM cho công việc khác hoặc kết quả thường xuyên sử dụng hơn.

Tôi không tuyên bố là chuyên gia - Tôi hiểu tối ưu hóa bộ nhớ cache truy vấn DB là một khoa học rất phức tạp và sâu sắc. Các lập trình viên tại Oracle, Microsoft và những người khác đã dành nhiều năm và năm làm việc ra cách tốt nhất cho không gian bộ nhớ cache được quản lý, do đó rất khó để dự đoán từ bên ngoài.

Các vấn đề liên quan