Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Почему не всегда записывается дамп ядра?

#linux #dump


На определённом хосте иногда падает один процесс, поэтому для него была включена
запись дампов ядра. Один раз дамп записался, но с тех пор было ещё три падения — дампов нет.



$ cat /etc/security/limits.conf | grep core | grep -v '#'
*    -    core    unlimited

$ cat /proc/sys/kernel/core_pattern
/tmp/core.%e.%p.%h.%t

$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 2063246
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 2063246
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

$ cat /proc/$(pgrep myprocess)/limits | grep core
Max core file size        unlimited            unlimited            bytes


Свободного места достаточно (около 17Gb, дамп занимает 2-4 Gb). Вручную процесс никто
не останавливал. О том, что было именно падение, я сужу по логам:

monit:

[NOVT Feb 12 05:07:21] error    : 'myprocess' process is not running
[NOVT Feb 12 05:07:21] info     : 'myprocess' trying to restart
[NOVT Feb 12 05:07:21] info     : 'myprocess' start: /etc/init.d/myprocess
[NOVT Feb 12 05:09:21] info     : 'myprocess' process is running with pid 22233


nginx, который направляет запросы этому процессу (оставил только нужное). Видим,
что в 05:06:20 уже вернул 502.

1.2.3.4 myhost - [12/Feb/2016:05:05:49 +0600] "POST someurl" 200 2659 ...
1.2.3.4 myhost - [12/Feb/2016:05:05:49 +0600] "POST someurl" 200 933 ...
1.2.3.4 myhost - [12/Feb/2016:05:06:20 +0600] "POST someurl" 502 166 ...


Я специально тестировал и убедился, что на точно такой же конфигурации дампы ядра
пишутся, в том числе когда уже есть один дамп (использовал kill -SIGSEGV pid). UPD:
протестировал прямо на этом хосте: дамп пишется.

В документации перечислены возможные причины, но вроде бы никакие условия не меняются,
так что и дампы должны записываться всегда или никогда.

Вопросы:


Может ли процесс в linux как-то аварийно завершить работу, чтобы это не попало под
условия, в которых не инициализируется дамп?
В чём ещё может быть причина, куда копать, что исследовать?

    


Ответы

Ответ 1



Из комментария @o2gy: Может там в процессе где-то срабатывает return/exit? Core dump нету, вот и итоговый дамп не создаётся.

Комментариев нет:

Отправить комментарий