OOM killer
OOM (out-of-memory) killer là một thành phần của nhân Linux giúp kết thúc tiến trình khi hệ thống cạn kiệt bộ nhớ và không thể giải phóng thêm. Nó chọn tiến trình dựa trên điểm số OOM, thường là tiến trình sử dụng nhiều bộ nhớ nhất. Nhật ký nhân ghi lại mọi hành động kết thúc do OOM.
1Cách chọn tiến trình bị kết thúc
Mỗi tiến trình có một điểm số trong /proc/<pid>/oom_score tăng dần theo mức sử dụng bộ nhớ. /proc/<pid>/oom_score_adj, từ -1000 đến 1000, dùng để điều chỉnh điểm số này; -1000 nghĩa là tiến trình sẽ không bao giờ bị chọn.
2Tìm kiếm các tiến trình bị kết thúc do OOM
Nhân hệ thống ghi 'Out of memory: Killed process' vào nhật ký. journalctl -k | grep -i oom hoặc dmesg | grep -i oom sẽ hiển thị các thông báo này, kèm theo tên tiến trình và mức sử dụng bộ nhớ của nó.
3Phòng ngừa
Thêm bộ nhớ hoặc swap, giới hạn các dịch vụ tiêu tốn nhiều bộ nhớ, hoặc đặt giới hạn cho từng dịch vụ bằng các tùy chọn systemd như MemoryMax=. Một số bản phân phối cũng chạy systemd-oomd, hoạt động sớm hơn dựa trên áp lực bộ nhớ.
Cách điều tra một tiến trình bị kết thúc do OOM
- Tìm kiếm trong nhật ký nhân:
journalctl -k | grep -i -A5 'out of memory' - Ghi lại tiến trình đã bị kết thúc và dung lượng bộ nhớ của nó.
- Kiểm tra bộ nhớ và swap hiện tại:
free -h - Tìm các tiến trình lớn nhất:
ps aux --sort=-rss | head - Thêm swap hoặc giới hạn dịch vụ, sau đó theo dõi xem sự cố có tái diễn không.
Lưu ý
- Việc đặt oom_score_adj thành -1000 cho quá nhiều tiến trình có thể khiến nhân hệ thống không còn lựa chọn an toàn nào.
- Tắt tính năng bảo vệ memory overcommit mà không hiểu rõ có thể gây ra lỗi ở các phần khác.
Bài liên quan
- Swap space trên LinuxSwap là gì, cách xem dung lượng swap bằng free và swapon, cách thêm tệp swap và ý nghĩa của vm.swappiness.
- Tải trung bìnhÝ nghĩa của ba con số tải trung bình, mối liên hệ của chúng với các nhân CPU và khi nào tải cao là một vấn đề.
- journalctl và systemd journalCách đọc nhật ký bằng journalctl, kiểm tra dung lượng mà journal sử dụng và thu nhỏ nó một cách an toàn với các tùy chọn --vacuum.
Nguồn
- Trang hướng dẫn proc(5): oom_score và oom_score_adj man7.org
- Quản lý bộ nhớ cạn kiệt (kernel.org) kernel.org
Ghi chú: RainServer cung cấp tính năng giám sát và dọn dẹp an toàn cho các máy chủ Linux; nó hiển thị những thay đổi sẽ thực hiện và yêu cầu xác nhận trước.
Xem xét lần cuối: