Rain WikiWindows · Linux · Android

OOM killer

Khái niệmTất cả bản phân phối Linux

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

  1. Tìm kiếm trong nhật ký nhân: journalctl -k | grep -i -A5 'out of memory'
  2. Ghi lại tiến trình đã bị kết thúc và dung lượng bộ nhớ của nó.
  3. Kiểm tra bộ nhớ và swap hiện tại: free -h
  4. Tìm các tiến trình lớn nhất: ps aux --sort=-rss | head
  5. 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.

Nguồn

  1. Trang hướng dẫn proc(5): oom_score và oom_score_adj man7.org
  2. 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: