Sử dụng 50% RAM khả dụng để kiểm tra:
Bạn có thể giảm innodb_buffer_pool_size xuống rất thấp để xem có hữu ích không:
#/etc/my.cnf
innodb_buffer_pool_size = 1M
Một nguyên tắc chung là đặt innodb_buffer_pool_size thành 50% RAM khả dụng để kiểm tra bộ nhớ thấp của bạn. Điều này có nghĩa là bạn khởi động máy chủ và mọi thứ ngoại trừ MySQL InnoDB. Xem bạn có bao nhiêu RAM. Sau đó, sử dụng 50% trong số đó cho InnoDB.
Để thử nhiều cài đặt bộ nhớ thấp cùng một lúc:
Thủ phạm có nhiều khả năng hơn là bất kỳ thứ gì khác trên máy chủ đó, chẳng hạn như máy chủ web.
Apache?
Bạn có đang sử dụng Apache và / hoặc một máy chủ web khác không? Nếu vậy, hãy cố gắng giảm mức sử dụng RAM của nó. Ví dụ:trong Apache conf, hãy xem xét các cài đặt RAM thấp như sau:
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 5
Và giới hạn các yêu cầu như sau:
MaxRequestsPerChild 300
Sau đó khởi động lại Apache.
mod_wsgi:
Nếu bạn đang sử dụng Apache với mod_python, hãy chuyển sang Apache với mod_wsgi.
Pympler:
Nếu nó vẫn đang xảy ra, có thể Django của bạn đang phát triển đều đặn. Thử cấu hình bộ nhớ Django với Pympler:
SAR:
Báo cáo của bạn về lỗi một lần mỗi ngày, sau đó một lần mỗi tuần, có thể chỉ ra một số loại công việc cron đang chạy hàng ngày hoặc hàng tuần. Ví dụ:có lẽ có một quá trình hàng loạt chiếm nhiều RAM hoặc kết xuất cơ sở dữ liệu, v.v.
Để theo dõi việc sử dụng RAM và tìm kiếm mức tăng đột biến của RAM trong một giờ trước khi MySQL chết, hãy xem SAR, đây là một công cụ tuyệt vời: http://www.thegeekstuff.com/2011/03/sar-examples/