Máy chủ của bạn phản ứng chậm với trang web, không thể khởi chạy ứng dụng, v.v…? Bạn gặp lỗi sử dụng bộ nhớ cao? Bài viết này sẽ hướng dẫn các bạn cách khắc phục lỗi này trên Linux nhé.
Trước khi bắt đầu tìm cách giải phóng bộ nhớ, bạn cần chắc rằng có thứ gì đó đang thực sự sử dụng bộ nhớ. Do cách Linux xử lý bộ nhớ, có vẻ như ứng dụng hay tiến trình nào đó đang sử dụng tất cả bộ nhớ khả dụng.
Theo mặc định, Linux thiết lập bộ nhớ không sử dụng sang một bên cho bộ nhớ cache, điều này thực sự giúp tăng tốc máy tính. Nếu gặp sự cố về sử dụng bộ nhớ thì có thể một dịch vụ hoặc ứng dụng có vấn đề thực sự sử dụng nhiều RAM hơn mức cần thiết.
Chẩn đoán sử dụng bộ nhớ
Để chẩn đoán bộ nhớ, bạn cần sử dụng một số lệnh khác nhau. Lệnh top được sử dụng để tìm ứng dụng dùng quá nhiều RAM.
Bạn có thể sử dụng lệnh free và ps giúp chẩn đoán vấn đề về RAM. Để sử dụng free, chạy lệnh sau:
free -m
Bạn sẽ thấy con số total và used tương tự nhau. Đây là hành vi thông thường của Linux, do đó bạn không cần lo lắng về nó. Điều quan trọng cần chú ý là phần used trong hàng buffers/cached, đây là bộ nhớ ứng dụng và dịch vụ thực sự đang dùng.
Bạn có thể sử dụng lệnh ps tương tự top để xác định ứng dụng nào đang sử dụng bộ nhớ nhiều nhất. Để kiểm tra, chạy lệnh sau:
ps aux
Lệnh trên sẽ hiển thị ứng dụng sử dụng nhiều bộ nhớ nhất và ID tiến trình của nó.
Sửa lỗi sử dụng bộ nhớ cao
Có một vài thủ phạm phổ biến khiến việc sử dụng bộ nhớ cao trên Linux. Một trong những nguyên nhân chính là Java. Khi sử dụng môi trường runtime Java chính thức hoặc giải pháp thay thế do GNU cung cấp, đều có thể dẫn đến hiện tượng sử dụng bộ nhớ cao. Nếu gặp phải vấn đề này trên máy chủ, có thể do JBoss hoặc Tomcat gây ra. Bạn sẽ tìm thấy file cấu hình của nó tương tự như:
/usr/local/jboss/bin/run.conf
/usr/local/tomcat/bin/setenv.sh
Nguyên nhân khác có thể do Apache hoặc MySQL. Bạn có thể kiểm tra file nhật ký để xem lỗi hoặc cảnh báo từ những dịch vụ này.
Khi đã biết được nguyên nhân, bạn có thể dễ dàng khắc phục được vấn đề.
Chúc các bạn thực hiện thành công!