En algunas ocasiones es posible que nos haya ocurrido que el servidor se haya reiniciado de forma abrupta. Muy seguramente encontraremos un archivo dump como por ejemplo el siguiente sistema de archivos contiene un archivo dump
root@comanche /var 10:49:05 # ls -ltr /var/crash/127.0.0.1-2023-05-19-02\:20\:54/ total 2531548 -rw------- 1 root root 1065218 May 19 02:20 vmcore-dmesg.txt -rw------- 1 root root 2591133181 May 19 02:21 vmcore -rw------- 1 root root 97176 May 19 02:21 kexec-dmesg.log root@comanche /var 10:49:06 #
Para poder analizar el contenido de archivo debemos apoyarnos en un comando llamado crash, el cual analizará la información contenida y nos informará de una forma general lo que ha ocurrido o la causa del reinicio del servidor.
Ejecutamos la orden crash con los siguientes parámetros, la ruta absoluta del archivo vmlinux de nuestro kernel y la ruta del archivo vmcore que se generó en la caida.
[root@centos8 modules]# crash /usr/lib/debug/lib/modules/4.18.0-348.2.1.el8_5.x86_64/vmlinux /root/127.0.0.1-2023-02-23-00\:19\:29/vmcore crash 7.3.0-2.el8 Copyright (C) 2002-2021 Red Hat, Inc. Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation Copyright (C) 1999-2006 Hewlett-Packard Co Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited Copyright (C) 2006, 2007 VA Linux Systems Japan K.K. Copyright (C) 2005, 2011, 2020-2021 NEC Corporation Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc. Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc. This program is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions. This program has absolutely no warranty. Enter "help warranty" for details. GNU gdb (GDB) 7.6 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu"... WARNING: kernel relocated [584MB]: patching 102991 gdb minimal_symbol values KERNEL: /usr/lib/debug/lib/modules/4.18.0-348.2.1.el8_5.x86_64/vmlinux DUMPFILE: /root/127.0.0.1-2023-02-23-00:19:29/vmcore [PARTIAL DUMP] CPUS: 4 DATE: Thu Feb 23 00:19:25 -05 2023 UPTIME: 02:17:24 LOAD AVERAGE: 16.84, 10.19, 5.88 TASKS: 517 NODENAME: comanche.unixpad.local RELEASE: 4.18.0-348.2.1.el8_5.x86_64 VERSION: #1 SMP Tue Nov 16 14:42:35 UTC 2021 MACHINE: x86_64 (2245 Mhz) MEMORY: 256 GB PANIC: "Kernel panic - not syncing: System is deadlocked on memory" PID: 26290 COMMAND: "edb-postmaster" TASK: ffff99215685af80 [THREAD_INFO: ffff99215685af80] CPU: 0 STATE: TASK_RUNNING (PANIC) crash>
Nos fijamos en el mensaje PANIC: “Kernel panic – not syncing: System is deadlocked on memory”.
Problemas de memoria, tenemos un comando edb-postmaster que ha consumido la memoria. Nótese que al ejecutar el comando crash, nos hemos quedado en un prompt para seguir indagando algunas cosas interesantes, podemos ejecutar el comando bt que nos genera un backtrace sobre lo que ha ocurrido.
crash> bt PID: 26290 TASK: ffff99215685af80 CPU: 0 COMMAND: "edb-postmaster" #0 [ffffb4aca19638e8] machine_kexec at ffffffffa58641ce #1 [ffffb4aca1963940] __crash_kexec at ffffffffa599e05d #2 [ffffb4aca1963a08] panic at ffffffffa58ec227 #3 [ffffb4aca1963a88] out_of_memory.cold.35 at ffffffffa5a7f0c0 #4 [ffffb4aca1963ac8] __alloc_pages_slowpath at ffffffffa5ad51c5 #5 [ffffb4aca1963bc0] __alloc_pages_nodemask at ffffffffa5ad558b #6 [ffffb4aca1963c20] pagecache_get_page at ffffffffa5a77fc5 #7 [ffffb4aca1963c60] filemap_fault at ffffffffa5a79cfe #8 [ffffb4aca1963d40] __xfs_filemap_fault at ffffffffc05eb5fd [xfs] #9 [ffffb4aca1963d90] __do_fault at ffffffffa5ab00c8 #10 [ffffb4aca1963db0] do_fault at ffffffffa5ab5010 #11 [ffffb4aca1963de8] __handle_mm_fault at ffffffffa5ab79c5 #12 [ffffb4aca1963e98] handle_mm_fault at ffffffffa5ab7dce #13 [ffffb4aca1963ec0] __do_page_fault at ffffffffa5875f5d #14 [ffffb4aca1963f20] do_page_fault at ffffffffa5876267 #15 [ffffb4aca1963f50] page_fault at ffffffffa620111e RIP: 00007f796bb5b0f0 RSP: 00007ffeafa81328 RFLAGS: 00010293 RAX: 0000001f20877734 RBX: 0000001f20854088 RCX: 0000000000000002 RDX: 0000000000000002 RSI: 0000001f2085408c RDI: 0000001f20877732 RBP: 00007ffeafa81390 R8: 0000001f2084f588 R9: 0000000000000001 R10: 0000000000000001 R11: 0000001f2085408c R12: 0000000000000001 R13: 0000001f2084f480 R14: 0000001f2085407c R15: 0000000000000000 ORIG_RAX: ffffffffffffffff CS: 0033 SS: 002b crash>
El proceso 26290 generó el problema. Ejecutemos el comando ps para ver los procesos que se ejecutaban en el momento de la caída.
crash> ps PID PPID CPU TASK ST %MEM VSZ RSS COMM 0 0 0 ffffffffa6e18840 RU 0.0 0 0 [swapper/0] 0 0 1 ffff98f88c882f80 RU 0.0 0 0 [swapper/1] > 0 0 2 ffff98f88c8817c0 RU 0.0 0 0 [swapper/2] > 0 0 3 ffff98f88c8a17c0 RU 0.0 0 0 [swapper/3] 1 0 2 ffff98f88c83af80 UN 0.0 238456 2952 systemd 2 0 0 ffff98f88c8397c0 IN 0.0 0 0 [kthreadd] 3 2 0 ffff98f88c83df00 ID 0.0 0 0 [rcu_gp] ... 25309 1311 0 ffff99263867af80 IN 0.0 162944944 2980 edb-postmaster 25310 1311 1 ffff99263867c740 IN 0.0 162944944 2980 edb-postmaster 25311 1311 0 ffff99289f6bc740 IN 0.0 162944944 2980 edb-postmaster 25312 1311 0 ffff99289f6b8000 IN 0.0 162944944 2980 edb-postmaster 25313 1311 3 ffff99289f6baf80 IN 0.0 162944944 2980 edb-postmaster 25314 1311 1 ffff98f88c93af80 IN 0.0 162944944 2980 edb-postmaster 25315 1311 0 ffff990c19334740 IN 0.0 162944944 2980 edb-postmaster 25320 1311 0 ffff990e21e90000 IN 0.0 162944944 2976 edb-postmaster 25328 1311 0 ffff99070b4e4740 IN 0.0 162944944 2976 edb-postmaster 25475 1311 1 ffff990753395f00 IN 0.0 162944944 2976 edb-postmaster 25578 2 1 ffff99194f374740 ID 0.0 0 0 [kworker/1:0] 25579 2 0 ffff990c194b5f00 ID 0.0 0 0 [kworker/0:0] > 26290 1311 0 ffff99215685af80 RU 48.4 299373152 130945452 edb-postmaster 26352 1311 2 ffff99215685df00 IN 0.0 162944944 2976 edb-postmaster 26370 1311 1 ffff9921568597c0 IN 0.0 162944944 2976 edb-postmaster 26410 1311 2 ffff99055a424740 IN 0.0 162945016 3208 edb-postmaster 26434 1311 2 ffff9918ea620000 IN 0.0 162944944 2976 edb-postmaster crash>
Los procesos involucrados el sistema los marca con un caracter “>” , en este caso hubo tres procesos (dos de swap y el proceso edb-postmaster). Ahora ejecutamos el comando log y podemos ver mucho mas en detalle lo que ha ocurrido.
[ 8244.187090] Out of memory and no killable processes... [ 8244.187092] Kernel panic - not syncing: System is deadlocked on memory [ 8244.191426] CPU: 0 PID: 26290 Comm: edb-postmaster Kdump: loaded Not tainted 4.18.0-348.2.1.el8_5.x86_64 #1 [ 8244.193401] Hardware name: oVirt RHEL/RHEL-AV, BIOS 1.16.0-1.module_el8.7.0+1140+ff0772f9 04/01/2014 [ 8244.195347] Call Trace: [ 8244.197271] dump_stack+0x5c/0x80 [ 8244.199164] panic+0xe7/0x2a9 [ 8244.201026] out_of_memory.cold.35+0x5e/0x7e [ 8244.202878] __alloc_pages_slowpath+0xbe5/0xcd0 [ 8244.204698] ? __switch_to_asm+0x41/0x70
Sólo pongo una porción de salida puesto que son miles de líneas las que se observan en la salida. Nos interesa conocer que el sistema se ha quedado sin memoria y que no tiene mas procesos que eliminar, por lo cual opta por ejecutar el reinicio del servidor.