Hầu hết các lệnh chạy dài bị giết ngay lập tức trên Amazon EC2 (Ubuntu 10.04)


26

Khi chạy bất kỳ loại lệnh chạy dài nào trong thiết bị đầu cuối, chương trình sẽ chết ngay lập tức và thiết bị đầu cuối xuất văn bản Killed.

Bất kỳ con trỏ? Có lẽ có một tệp nhật ký với dữ liệu giải thích tại sao các lệnh bị giết?

Cập nhật

Đây là một đoạn trích từ dmesgđó hy vọng sẽ làm sáng tỏ những gì gây ra vấn đề. Một lưu ý khác có thể hữu ích là đây là một ví dụ Amazon EC2.

May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184209] Call Trace:
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184218]  [<c01e49ea>] dump_header+0x7a/0xb0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184221]  [<c01e4a7c>] oom_kill_process+0x5c/0x160
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184224]  [<c01e4fe9>] ? select_bad_process+0xa9/0xe0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184227]  [<c01e5071>] __out_of_memory+0x51/0xb0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184229]  [<c01e5128>] out_of_memory+0x58/0xd0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184232]  [<c01e7f16>] __alloc_pages_slowpath+0x416/0x4b0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184235]  [<c01e811f>] __alloc_pages_nodemask+0x16f/0x1c0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184238]  [<c01ea2ca>] __do_page_cache_readahead+0xea/0x210
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184241]  [<c01ea416>] ra_submit+0x26/0x30
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184244]  [<c01e3aef>] filemap_fault+0x3cf/0x400
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184247]  [<c02329ad>] ? core_sys_select+0x19d/0x240
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184252]  [<c01fb65c>] __do_fault+0x4c/0x5e0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184254]  [<c01e4161>] ? generic_file_aio_write+0xa1/0xc0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184257]  [<c01fd60b>] handle_mm_fault+0x19b/0x510
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184262]  [<c05f80d6>] do_page_fault+0x146/0x440
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184265]  [<c0232c62>] ? sys_select+0x42/0xc0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184268]  [<c05f7f90>] ? do_page_fault+0x0/0x440
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184270]  [<c05f53c7>] error_code+0x73/0x78
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.184274]  [<c05f007b>] ? setup_local_APIC+0xce/0x33e
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272161]  [<c05f0000>] ? setup_local_APIC+0x53/0x33e
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272163] Mem-Info:
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272164] DMA per-cpu:
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272166] CPU    0: hi:    0, btch:   1 usd:   0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272168] Normal per-cpu:
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272169] CPU    0: hi:  186, btch:  31 usd:  50
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272171] HighMem per-cpu:
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272172] CPU    0: hi:  186, btch:  31 usd:  30
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272176] active_anon:204223 inactive_anon:204177 isolated_anon:0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272177]  active_file:47 inactive_file:141 isolated_file:0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272178]  unevictable:0 dirty:0 writeback:0 unstable:0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272179]  free:10375 slab_reclaimable:1650 slab_unreclaimable:1856
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272180]  mapped:2127 shmem:3918 pagetables:1812 bounce:0May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272186] DMA free:6744kB min:72kB low:88kB high:108kB active_anon:300kB inactive_anon:308kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15812kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:8kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272190] lowmem_reserve[]: 0 702 1670 1670May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272197] Normal free:34256kB min:3352kB low:4188kB high:5028kB active_anon:317736kB inactive_anon:317308kB active_file:144kB inactive_file:16kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:719320kB mlocked:0kB dirty:4kB writeback:0kB mapped:32kB shmem:0kB slab_reclaimable:6592kB slab_unreclaimable:7424kB kernel_stack:2592kB pagetables:7248kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:571 all_unreclaimable? yes
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272201] lowmem_reserve[]: 0 0 7747 7747May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272207] HighMem free:500kB min:512kB low:1668kB high:2824kB active_anon:498856kB inactive_anon:499092kB active_file:44kB inactive_file:548kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:991620kB mlocked:0kB dirty:0kB writeback:0kB mapped:8472kB shmem:15672kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:430 all_unreclaimable? yes
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272211] lowmem_reserve[]: 0 0 0 0May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272215] DMA: 10*4kB 22*8kB 38*16kB 33*32kB 16*64kB 10*128kB 4*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 6744kBMay 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272223] Normal: 476*4kB 1396*8kB 676*16kB 206*32kB 23*64kB 2*128kB 0*256kB 0*512kB 0*1024kB 1*2048kB 0*4096kB = 34256kBMay 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272231] HighMem: 1*4kB 2*8kB 28*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 500kB
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272238] 4108 total pagecache pages
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272240] 0 pages in swap cache
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272242] Swap cache stats: add 0, delete 0, find 0/0
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272243] Free swap  = 0kB
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.272244] Total swap = 0kB
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.276842] 435199 pages RAM
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.276845] 249858 pages HighMem
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.276846] 8771 pages reserved
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.276847] 23955 pages shared
May 14 20:29:15 ip-10-112-33-63 kernel: [11144050.276849] 405696 pages non-shared

Rất hữu ích, chỉ có cùng một vấn đề
Cookie

Câu trả lời:


36

Bạn sẽ có thể tìm ra cái gì đã giết quá trình của bạn bằng cách nhìn vào đầu ra của dmesglệnh; hoặc tại các log /var/log/kern.log, /var/log/messageshoặc /var/log/syslog.

Có một số điều có thể khiến một quá trình bị giết chết:

  • Nếu nó vượt quá ulimit cứng cho các loại sử dụng bộ nhớ hoặc cpu khác nhau mà bạn có thể kiểm tra bằng cách sử dụng ulimit -H -a
  • Nếu hệ thống thiếu bộ nhớ ảo, các tiến trình có thể bị giết bởi kernel oom-killer để giải phóng bộ nhớ (Trong trường hợp của bạn, có lẽ không phải vậy)
  • Nếu hệ thống đã cài đặt SELinux và / hoặc PaX / grsecurance, một quy trình có thể bị hủy nếu hệ thống cố gắng thực hiện điều gì đó không được chính sách bảo mật cho phép hoặc nếu nó cố thực thi mã tự sửa đổi.

Các bản ghi hoặc dmesg sẽ cho bạn biết lý do tại sao quá trình bị giết.


Cảm ơn câu trả lời của bạn! Chỉ cần kiểm tra các tệp nhật ký bạn đã đề cập, nhưng tôi dường như không thể tìm thấy nhiều dữ liệu hữu ích. Kiểm tra cập nhật cho câu trả lời của tôi để xem thoáng qua.
Dan Loewenherz

3
Đúng, bạn đang nhận được một chút bởi kẻ giết người oom; có nghĩa là bạn đã hết bộ nhớ. Hãy thử thêm một số không gian hoán đổi vào ví dụ của bạn (thậm chí chỉ vài trăm MB trao đổi có thể giúp ích rất nhiều trong tình huống bộ nhớ thấp).
Heath

Đối với những người khác tự hỏi làm thế nào để thêm trao đổi vào một phiên bản EC2, câu trả lời này đã giúp tôi (sau khi SSH vào ví dụ): stackoverflow.com/a/17173973/4900327
Abhishek Divekar

10

Nhật ký bạn đã đăng như trong bản cập nhật cho biết hệ thống của bạn sắp hết bộ nhớ và kẻ giết người OOM đang được yêu cầu tiêu diệt các tiến trình để duy trì bộ nhớ trống khi "tất cả các lỗi khác". Thuật toán lựa chọn cho trình diệt OOM có thể được ưu tiên nhắm mục tiêu vào các quy trình "chạy dài" của bạn. Xem trang được liên kết để biết mô tả về thuật toán lựa chọn.

Giải pháp rõ ràng là có nhiều bộ nhớ hơn nhưng bạn có thể sắp hết bộ nhớ do rò rỉ bộ nhớ ở đâu đó và việc thêm nhiều bộ nhớ có thể chỉ làm trì hoãn kẻ giết người OOM được gọi nếu đó là trường hợp. Kiểm tra bảng quy trình của bạn để biết các quy trình sử dụng nhiều bộ nhớ nhất với công cụ yêu thích của bạn (top, ps, v.v.) và đi từ đó.


Kẻ giết người OOM có một ưu tiên nhất định cho các quá trình hoạt động thấp, hoạt động lâu dài. Có nó giết sshd trên một máy chủ sản xuất làm cho việc gỡ lỗi trở nên khó khăn.
mfarver

Sshd điều chỉnh điểm số của chính nó / Proc / pid / oom_adj để nó không bị giết bởi kẻ giết người oom (trước khi nó giết chết mọi thứ khác).
yaplik

@yaplik Điều này dường như không còn áp dụng cho các bản phân phối gần đây nữa. Khi các tiến trình con kế thừa giá trị của oom_adj, một người dùng độc hại có thể gây ra DoS bằng cách tiêu thụ tất cả bộ nhớ mà không có quá trình của anh ta / cô ta bị giết bởi kẻ giết người OOM.
ikso

4

Như đã được giải thích bởi những người khác, bạn đang hết bộ nhớ, do đó, kẻ giết người hết bộ nhớ sẽ bị kích hoạt và giết chết một số quy trình.

Bạn có thể sửa lỗi này:

a) nâng cấp máy ec2 của bạn lên máy mạnh hơn, 'thể hiện nhỏ' có bộ nhớ gấp 2,5 lần (1,7 GB) so với 'thể hiện vi mô' (0,64GB), tốn thêm tiền

b) thêm phân vùng swap - bổ sung thêm ổ EBS, mkswap /dev/sdx, swapon /dev/sdx, chi phí lưu trữ EBS và lệ phí IO

c) thêm tập tin swap - dd if=/dev/zero of=/swap bs=1M count=500, mkswap /swap, swapon /swap, tốn phí IO và không gian trống trên gốc EBS

C) là đủ, nhưng hãy nhớ rằng cá thể vi mô không được phép chạy các tác vụ cpu chạy dài do giới hạn cpu (chỉ cho phép các đợt ngắn).


3

Tôi đã từng gặp vấn đề tương tự. Quá trình của tôi đã bị giết.

Tôi phát hiện ra rằng Ubuntu AMI tôi đang sử dụng không có không gian hoán đổi được thiết lập. Khi bộ nhớ đầy và không có không gian hoán đổi có sẵn, hạt nhân sẽ bắt đầu giết chết các quá trình để bảo vệ chính nó. Trao đổi không gian ngăn chặn điều đó. (Vấn đề này đặc biệt liên quan đến phiên bản Micro vì bộ nhớ nhỏ 613 MB.)

Để kiểm tra xem bạn có loại không gian trao đổi được thiết lập không: swapon -s

Thiết lập không gian hoán đổi: http://www.linux.com/news/software/appluggest/8208-all-about-linux-swap-space

Các tài nguyên khác: http://wiki.sysconfig.org.uk/display/howto/Build+your+own+Core+CentOS+5.x+AMI+for+Amazon+EC2


Đã làm cho tôi! Dmesg của tôi chỉ chứa nhiều "chọn Proccess_name để giết" lần lượt và tôi không có / var / log / tin nhắn hoặc bất kỳ nhật ký hữu ích nào, nhưng chạy "free -h" cho thấy gần như không còn bộ nhớ. Cảm ơn nhiều!
divieira

1

Nhật ký cho biết bạn sắp hết bộ nhớ trao đổi / bộ nhớ cache.

    Ngày 14 tháng 5 20:29:15 ip-10-112-33-63 kernel: [11144050.272240] 0 trang trong bộ đệm trao đổi
    Ngày 14 tháng 5 20:29:15 ip-10-112-33-63 kernel: [11144050.272242] Hoán đổi số liệu thống kê bộ đệm: thêm 0, xóa 0, tìm 0/0
    14 tháng 5 20:29:15 ip-10-112-33-63 kernel: [11144050.272243] Trao đổi miễn phí = 0kB
    Ngày 14 tháng 5 20:29:15 ip-10-112-33-63 kernel: [11144050.272244] Tổng số trao đổi = 0kB

Bạn có thể phân chia công việc / quy trình bạn đang chạy theo đợt không? Có lẽ bạn có thể thử chạy nó một cách cô lập sau khi dừng các quá trình khác?

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.