Tôi gặp sự cố trong đó máy chủ của tôi bắt đầu không thực hiện một số quy trình và kiểm tra thông thường bởi vì bộ nhớ của máy chủ đã hoàn toàn đầy và được thực hiện.Lịch sử sử dụng bộ nhớ Linux
Tôi đã xem lịch sử ghi nhật ký và thấy rằng nó đã bị giết là một số quy trình Java.
Tôi đã sử dụng lệnh "trên cùng" để xem quy trình nào đang chiếm nhiều bộ nhớ nhất ngay bây giờ (sau khi sự cố đã được khắc phục) và đó là một quá trình Java. Vì vậy, về bản chất, tôi có thể nói những gì các quá trình đang chiếm bộ nhớ nhất ngay bây giờ.
Điều tôi muốn biết là có cách nào để xem quy trình nào đang chiếm nhiều bộ nhớ nhất vào thời điểm xảy ra lỗi không? Có lẽ Linux theo dõi hoặc đăng nhập sử dụng bộ nhớ vào những thời điểm cụ thể? Tôi thực sự không có ý tưởng nhưng nó sẽ là tuyệt vời nếu tôi có thể thấy rằng loại chi tiết.
FWIW, bạn có thể sử dụng mlockall() hoặc tương tự để thực hiện một quá trình tương đối đáng tin cậy trong một khủng hoảng bộ nhớ. EG: http://stromberg.dnsalias.org/~strombrg/fallback-reboot/ – user1277476
Đó là sự thật chỉ cho các ứng dụng rất hạn chế. Thực hiện bất kỳ cuộc gọi hệ thống nào đều có khả năng thất bại do lỗi phân bổ trong hạt nhân. Việc sinh ra các quy trình bên ngoài là ngoài câu hỏi. I/O hệ thống tập tin có khả năng treo vô thời hạn do cạn kiệt bộ đệm. Đúng là nó không phải là không thể, nhưng nó phải được thực hiện với sự chăm sóc đặc biệt. –