Tìm ra quá trình đã bị giết bởi kẻ giết người OOM Linux


172

Khi Linux hết bộ nhớ (OOM), kẻ giết người OOM chọn một quy trình để giết dựa trên một số phương pháp phỏng đoán (đó là một cách đọc thú vị: http://lwn.net/Articles/317814/ ).

Làm thế nào một người có thể lập trình xác định các quy trình gần đây đã bị giết bởi kẻ giết người OOM?

Câu trả lời:


171

Thử thứ này đi:

grep -i 'killed process' /var/log/messages

18
FWIW, tôi nhận được những tin nhắn đó trong syslog hoặc kern.log, nhưng không phải / var / log / message
jberryman

36
Bạn có thể sử dụng "egrep -i -r 'quy trình bị giết' / var / log /" để tìm kiếm nó ở những nơi khác.
metdos

5
@jberryman: Vì một số lý do, syslog nằm trong /var/log/syslogmột số distro và /var/log/messagestrên những cái khác. Tôi nghĩ đó là Debian cho cái trước và Red Hat cho cái sau, BICBW.
Tom Anderson

5
"dmesg | egrep -i 'quy trình bị giết'" và bạn có thể tìm kiếm nhật ký ở bất cứ đâu (kể cả những tài liệu được lưu trữ) :)
John D

2
egrepkhông có ý nghĩa ở đây. Rõ ràng cũ grep, hoặc nếu chúng ta cụ thể, fgrepcó ý nghĩa hơn nhiều. (Chỉnh sửa câu trả lời phù hợp.)
antak

148

Hãy thử điều này để bạn không cần lo lắng về việc nhật ký của bạn ở đâu

dmesg | egrep -i 'killed process'

1
Điều này cũng hữu ích, nhưng trong khi tôi không may giải thích nó, tôi thấy kết quả trong /var/log/messagesđó không hiển thị trong dmesg/ /var/log/dmesg. Nó có thể là một số loại cấu hình sai, nhưng đáng chú ý rằng sử dụng cả hai phương pháp có thể là một ý tưởng tốt.
kungphu

3
Không chắc chắn về tệp nhật ký của bạn, nhưng đầu ra của dmesg là từ bộ đệm vòng kích thước giới hạn. Nếu những thứ khác đã lấp đầy bộ đệm kể từ kẻ giết người oom thì bạn sẽ mất đầu ra của kẻ giết người.
Dan Pritts

Đây là cách duy nhất tôi tìm thấy làm thế nào để thấy quá trình đó bị giết trong container OpenVZ
igo

16
Tôi cũng đề nghị sử dụng dmesg -Tđể có được dấu thời gian có thể đọc được
gukoff

2
So với / var / log / message, điều này có ưu điểm là không yêu cầu quyền root
Kineolyan

52

Bây giờ dstat cung cấp tính năng để tìm hiểu trong hệ thống đang chạy của bạn, quá trình nào là ứng cử viên để bị giết bởi cơ chế oom

dstat --top-oom
 --out-of-memory---
  kill score
 java           77
 java           77
 java           77

và theo trang nam

  --top-oom
          show process that will be killed by OOM the first

Thông tin này là vô nghĩa mà không biết ý nghĩa của điểm số và điều đó không được ghi lại ở bất cứ đâu. Tất cả những gì bạn có thể thấy là tăng điểm, sau đó là quá trình bị giết, vì vậy có thể đó là kẻ giết người oom, hoặc có thể đó là một thứ khác, không có cách nào để chắc chắn.
laurent

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.