PM2 убивает каждые 90 секунд на centos 8

Я только что установил CentOS 8 и добавил nodejs (пробовал v12 и v14), а затем я установил pm2, используя npm install pm2 @ latest (поэтому во время публикации он использует v4.4.0). Я пробовал старую версию (v3.5.0), но она делает то же самое.

и после того, как pm2 был установлен, я запустил команду pm2 startup

после перезапуска pm2 запускается, но через 90 секунд прекращает работу, а затем перезапускается, выдавая это сообщение

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

Сначала я думал, что это из-за моего приложения (того, которым должен управлять pm2), но я удалил его из pm2, так что оно практически пустое, но делает то же самое.


person Alex Laz    schedule 09.07.2020    source источник
comment
Я вижу то же самое в RHEL 8.2, node v12.16.1. Каждые 90 секунд pm2 has been killed by signal, dumping process list before exit... Вы нашли какое-нибудь решение? В журналах не вижу ничего полезного. У меня те же версии и установка, запущенная в другой среде, но я не вижу здесь проблемы. Но каждые 90 секунд перезапуск.   -  person baronnoraz    schedule 17.07.2020
comment
У меня похожая проблема. Это не всегда 90 секунд, иногда 60 секунд, а иногда 120 секунд. Я обнаружил, что pm2 проверяет использование памяти каждые 30 секунд, что кажется связанным, но пока ничего не нашел.   -  person Jedediah Smith    schedule 21.07.2020
comment
Вы что-нибудь нашли? То же самое происходит со мной, каждый раз ровно через 90 секунд. Независимо от того, использую ли я один или несколько API, весь процесс pm2 перезапускается.   -  person peterdotplus    schedule 27.07.2020
comment
Да, прочтите ниже (3 варианта). Используйте пока либо второй, либо третий.   -  person Alex Laz    schedule 02.08.2020


Ответы (4)


Позднее обновление. Для тех, кто сталкивается с такими же проблемами. Это проблема, связанная с SE Linux. Известные обходные пути (те, которые я обнаружил).

  1. Отключение SE Linux (очевидно, не рекомендуется)

  2. перейдите в /etc/systemd/system/pm2-root.service - комментарий PIDFile = ... (добавьте # перед этой строкой)

  3. Аудит и трассировка - используйте следующие команды:

     # dnf install policycoreutils-python-utils setroubleshoot-server -y
     # journalctl -f
    

    На этом этапе вы должны увидеть решение в выводе (журнале), оно должно быть примерно таким:

    # ausearch -c 'systemd' --raw | audit2allow -M my-systemd
    # semodule -i my-systemd.pp
    

    Вам нужно выполнить последний шаг (поиск ... и semodule ...) дважды - я сделал это один раз, перезапустил машину и заметил ту же проблему через 90 секунд. Но если вы внимательно прочитаете журнал, вы заметите, что проблема, кажется, повторяется дважды. (выглядит так же). Вероятно, две вещи пытаются записать в этот файл (pm2-root.service).

Все еще ждем идеального решения (сделанного человеком, который действительно знает, как исправить это должным образом), но для тех, у кого есть эта проблема, любой из этих вариантов, похоже, работает нормально.

person Alex Laz    schedule 02.08.2020
comment
comment
Думаю отключать SE Linux небезопасно - person Epexa; 21.11.2020
comment
Вариант 2, похоже, у меня сработал. Кто-нибудь может объяснить, как это работает? - person naveed; 22.11.2020
comment
Использовал вариант 2, затем перезагрузил сервер. Проблема решена. Есть проблемы с безопасностью? Я тоже, как это работает. Я использую Ubuntu, хотя, кстати, - person mrg95; 25.06.2021

Я не отключал SE Linux (думаю, отключать небезопасно), но мне помог следующий метод:

Отредактируйте файл: /etc/systemd/system/pm2-root.service

  1. Добавить новую строку: Environment=PM2_PID_FILE_PATH=/run/pm2.pid

  2. И замените: PIDFile=/root/.pm2/pm2.pid на: PIDFile=/run/pm2.pid

Версии:

  • CentOS 8.3.2011
  • Node.js 14.16.0
  • NPM 7.7.5
  • PM2 4.5.5

Исходный ответ. Спасибо, Алек!

person Epexa    schedule 30.03.2021
comment
У меня была такая же проблема в Fedora с экземпляром pm2, созданным для пользователя, отличного от root. Чтобы избежать изменения разрешений, я использовал папку / tmp / вместо папки / run / - person Davide; 20.04.2021

У меня была такая же проблема, и я попробовал несколько решений в Интернете, но ни одно из них не помогло мне.

Однако я полностью удалил pm2, перезапустил сервер и переустановил pm2, и это сделало это за меня.

1- Остановить и удалить pm2

pm2 kill
sudo npm remove pm2 -g

2- Перезагрузите сервер

sudo reboot

3- Войдите снова, затем переустановите pm2

sudo npm install -g pm2
person Shakirah    schedule 29.09.2020
comment
Вы также можете удалить это, потому что это не имеет ничего общего с Ubuntu. Это проблема SELinux, которая не устанавливается вместе с Ubuntu. - person Alex Laz; 30.09.2020
comment
@shakirah опечатка на последнем шаге: pm, нужен pm2 - person Epexa; 21.11.2020
comment
Кажется, это решило проблему для меня. Спасибо :) - person Hello World; 24.04.2021
comment
решено для меня, но я должен был сделать: обновление pm2 тоже - person Albanir Neves; 18.05.2021
comment
работает на сервере ubuntu, это тоже решило для меня. sudo service pm2-ubuntu status будет указывать на то, что файл PID не может быть прочитан. после этой переустановки эта ошибка больше не отображается - person Caina Santos; 29.06.2021

У меня была эта проблема (в Debian), когда по какой-то причине были запущены два процесса PM2 God Daemon (не потоки), поэтому они конфликтовали друг с другом.

Убийство одного из них решило проблему.

person mortiy    schedule 02.12.2020