Nhận một kết xuất cốt lõi của / gỡ lỗi một quá trình bị giết bởi oom-killer


10

Có cách nào để có được một bãi rác cốt lõi, hoặc có thể gỡ lỗi một quá trình đã bị giết bởi kẻ giết người không?

Hoặc thậm chí đặt oom-killer để cố gắng giết một quá trình bằng ABRT thay thế?

Câu trả lời:


5

Một cách tiếp cận khác, là vô hiệu hóa bộ nhớ quá mức.

Để khôi phục một số lợi ích của sự tỉnh táo đối với việc quản lý bộ nhớ của bạn:

  1. Vô hiệu hóa OOM Killer (Đặt vm.oom-kill = 0trong /etc/sysctl.conf)
  2. Vô hiệu hóa bộ nhớ quá mức (Đưa vm.overcommit_memory = 2vào /etc/sysctl.conf)

Các cài đặt này sẽ khiến Linux hoạt động theo cách truyền thống (nếu một quy trình yêu cầu nhiều bộ nhớ hơn khả dụng malloc()sẽ thất bại và quá trình yêu cầu bộ nhớ dự kiến ​​sẽ đối phó với thất bại đó).

Lưu ý rằng đây là một giá trị ternary:
  • 0 = "ước tính nếu chúng ta có đủ RAM"
  • 1 = "Luôn luôn nói có"
  • 2 = "nói không nếu chúng ta không có bộ nhớ"

Điều này sẽ buộc ứng dụng tự xử lý hết bộ nhớ và có thể các bản ghi / coredump / vv của ứng dụng có thể cung cấp cho bạn một cái gì đó hữu ích.

CẬP NHẬT # 1

LƯU Ý: Khi hệ thống của bạn hết bộ nhớ, bạn sẽ không thể sinh ra các quy trình mới! Bạn có thể bị khóa khỏi hệ thống.


Đây là một ý tưởng khủng khiếp. Hầu hết các phần mềm chạy trên hệ thống của bạn có thể không xử lý chính xác giá trị trả về từ lỗi cấp phát bộ nhớ. Làm điều này sẽ khiến cho các đường dẫn mã mà thực tế không bao giờ được thực thi bởi bất kỳ ai để chạy và trong trường hợp xấu nhất thậm chí có thể đưa ra các lỗ hổng bảo mật trên hệ thống của bạn để chạy các đường dẫn mã chưa được kiểm tra và không mong muốn này.
KJ Tsanaktsidis

4
echo 1 > /proc/sys/vm/oom_dump_tasks

có vẻ như về mức tối đa mà bạn có thể khiến kernel hiển thị trên các lỗi hết bộ nhớ.

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

Cho phép kết xuất tác vụ trên toàn hệ thống (không bao gồm các luồng nhân) khi kernel thực hiện hủy OOM và bao gồm các thông tin như pid, uid, tgid, vm size, rss, nr_ptes, hoán đổi, điểm oom_score_adj và tên. Điều này rất hữu ích để xác định lý do tại sao kẻ giết người OOM được viện dẫn, để xác định nhiệm vụ lừa đảo gây ra nó và để xác định lý do tại sao kẻ giết người OOM chọn nhiệm vụ mà nó đã làm để giết.

Nếu điều này được đặt thành không, thông tin này sẽ bị chặn. Trên các hệ thống rất lớn với hàng ngàn tác vụ, có thể không khả thi để kết xuất thông tin trạng thái bộ nhớ cho từng tác vụ. Các hệ thống như vậy không nên bị buộc phải chịu một hình phạt hiệu suất trong điều kiện OOM khi thông tin có thể không được mong muốn.

Nếu điều này được đặt thành khác không, thông tin này sẽ được hiển thị bất cứ khi nào kẻ giết người OOM thực sự giết chết một nhiệm vụ ăn cắp bộ nhớ.

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.