La mayoría de los comandos de ejecución prolongada se eliminan instantáneamente en Amazon EC2 (Ubuntu 10.04)

26

Al ejecutar cualquier tipo de comando de ejecución prolongada en el terminal, el programa muere instantáneamente y el terminal emite el texto Killed.

Cualquier puntero? ¿Quizás haya un archivo de registro con datos que expliquen por qué se están matando los comandos?

Actualizar

Aquí hay un fragmento de dmesgeso que con suerte debería iluminar lo que está causando el problema. Otra nota que podría ser útil es que esta es una instancia de 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
Dan Loewenherz
fuente
Muy útil, acabo de tener el mismo problema
Cookie

Respuestas:

36

Debería poder averiguar qué mató su proceso mirando la salida del dmesgcomando; o en los archivos de registro /var/log/kern.log, /var/log/messageso /var/log/syslog.

Hay una serie de cosas que pueden hacer que un proceso se cierre sumariamente:

  • Si excede el límite rígido para varios tipos de uso de memoria o CPU que puede examinar usando ulimit -H -a
  • Si el sistema tiene poca memoria virtual, el kernel oom-killer puede matar los procesos para liberar memoria (en su caso, probablemente no sea esto)
  • Si el sistema tiene instalado SELinux, y / o PaX / grsecurity, un proceso podría ser eliminado si intenta hacer algo que no está permitido por la política de seguridad, o si intenta ejecutar código auto-modificado.

Los registros o dmesg deberían decirle por qué se canceló el proceso.

Brezo
fuente
¡Gracias por tu respuesta! Solo revisé los archivos de registro que mencionó, pero parece que no puedo encontrar muchos datos útiles. Echa un vistazo a la actualización de mi respuesta para ver un vistazo.
Dan Loewenherz
3
Sí, te está mordiendo el asesino de Oom; lo que significa que te has quedado sin memoria. Intente agregar un poco de espacio de intercambio a su instancia (incluso unos pocos cientos de megas de intercambio pueden ayudar mucho en una situación de poca memoria).
Heath
Para otros que se preguntaban cómo agregar swap a una instancia EC2, esta respuesta me ayudó (después de SSHing en la instancia): stackoverflow.com/a/17173973/4900327
Abhishek Divekar
10

Los registros que publicó como actualización indican que su sistema se está quedando sin memoria y se está invocando al asesino de OOM para eliminar los procesos a fin de mantener la memoria libre cuando "todo lo demás falla". El algoritmo de selección para el asesino OOM podría estar orientado favorablemente a sus procesos de "larga ejecución". Consulte la página vinculada para obtener una descripción del algoritmo de selección.

La solución obvia es más memoria, pero es posible que se esté quedando sin memoria debido a una pérdida de memoria en algún lugar y agregar más memoria probablemente solo retrasaría la invocación del asesino OOM si ese es el caso. Consulte su tabla de procesos para ver los procesos que utilizan la mayor cantidad de memoria con su herramienta favorita (top, ps, etc.) y vaya desde allí.

Ortomson
fuente
El asesino OOM tiene una preferencia definitiva por procesos de larga duración y baja actividad. Hacer que mate sshd en un servidor de producción dificulta la depuración.
mfarver
Sshd ajusta su propio puntaje / proc / pid / oom_adj para que oom killer no pueda matarlo (antes de que mate todo lo demás).
yaplik
@yaplik Esto ya no parece aplicarse a distribuciones recientes. A medida que los procesos secundarios heredan el valor de oom_adj, un usuario malintencionado puede causar un DoS al consumir toda la memoria sin que el asesino OOM elimine sus procesos.
ikso
4

Como ya explicaron otros, se está quedando sin memoria, por lo que el asesino de memoria se dispara y mata algún proceso.

Puedes arreglar esto haciendo:

a) actualice su máquina ec2 a una más potente, 'instancia pequeña' tiene 2.5 veces más memoria (1.7GB) que 'microinstancia' (0.64GB), cuesta dinero adicional

b) añadir partición de intercambio - Añadir la unidad adicional EBS, mkswap /dev/sdx, swapon /dev/sdx, los costes de almacenamiento EBS y tarifas IO

c) añadir archivo de intercambio - dd if=/dev/zero of=/swap bs=1M count=500, mkswap /swap, swapon /swap, cuesta honorarios IO y el espacio libre en la raíz de EBS

La c) debería ser suficiente, pero tenga en cuenta que no se supone que la microinstancia ejecute tareas intensivas de CPU de larga duración debido a los límites de la CPU (solo se permiten ráfagas cortas).

yaplik
fuente
3

Yo tuve el mismo problema. Mis procesos estaban siendo asesinados.

Descubrí que Ubuntu AMI que estaba usando no tenía un espacio de intercambio configurado. Cuando la memoria está llena y no hay espacio de intercambio disponible, el núcleo comenzará a matar procesos de forma impredecible para protegerse. El espacio de intercambio lo impide. (Este problema es especialmente relevante para la instancia Micro debido a los pequeños 613 MB de memoria).

Para verificar si tiene un espacio de intercambio configurado, escriba: swapon -s

Configure el espacio de intercambio: http://www.linux.com/news/software/applications/8208-all-about-linux-swap-space

Otros recursos: http://wiki.sysconfig.org.uk/display/howto/Build+your+own+Core+CentOS+5.x+AMI+for+Amazon+EC2

Delicioso
fuente
¡Trabajó para mi! Mi dmesg contenía solo muchos "select proccess_name to kill" uno tras otro y no tenía / var / log / messages ni ningún registro útil, pero ejecutar "free -h" mostró que casi no quedaba memoria. ¡Muchas gracias!
divieira
1

El registro dice que se está quedando sin memoria de intercambio / caché.

    14 de mayo 20:29:15 ip-10-112-33-63 kernel: [11144050.272240] 0 páginas en caché de intercambio
    14 de mayo 20:29:15 ip-10-112-33-63 kernel: [11144050.272242] Intercambiar estadísticas de caché: agregar 0, eliminar 0, encontrar 0/0
    14 de mayo 20:29:15 ip-10-112-33-63 kernel: [11144050.272243] Intercambio libre = 0kB
    14 de mayo 20:29:15 ip-10-112-33-63 kernel: [11144050.272244] Intercambio total = 0kB

¿Puedes dividir el trabajo / proceso que estás ejecutando en lotes? ¿Quizás pueda intentar ejecutarlo de forma aislada después de detener los otros procesos?

Mecánico de software
fuente