Запустил несколько фонов процессов стратегий, получил неприятность:


Явно процесс работает, данные тоже свежие, а PM2 показывает, что он остановлен.
Если доверять PM2 и просто перезапустить, то можно прервать уже выполняющуюся работу процесса.
Потом понял: PM2 / launchd / pid файлы — это только статус, зарегистрированный на уровне наблюдения —
То, что он записан или нет, не означает, что процесс действительно запущен.
Настоящее состояние можно определить только по файлу здоровья, который сам процесс обновляет —
Последнее обновление было несколько минут назад + количество процессов совпадает = жив.
Написал скрипт для проверки, который одновременно собирает 4 значения для каждого процесса:
- Есть ли процесс (проверка через ps)
- Зарегистрирован ли в PM2 / launchd
- Когда последний раз обновлялся файл здоровья
- Совпадают ли все три показателя
Если файл здоровья свежий, то считать процесс живым, а не мертвым.
Инженерный урок: чтобы определить, "жив ли система", не стоит смотреть только на уровень наблюдения,
Важно смотреть на то, что генерирует сама система — свежие ли данные она предоставляет.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
Добавить комментарий
Добавить комментарий
Нет комментариев
  • Закрепить