Рабочий Heroku выполнялся дважды, когда начинал (масштабировал) отчет об изменении состояния с начала до до и снова - PullRequest
0 голосов
/ 14 января 2019

У меня самое простое приложение node . Нет планировщика.

Package.json:

"engines": {    "node": "10.X"  },

"dependencies": {    "dotenv": "^6.2.0",    "express": "^4.16.4"  }

PROCFILE:

web: node index.js ==> express hello world
worker: node domywork.js ==> console.log(The time)

код domywork.js:

const d = new Date();
console.log(`doing work ${d.toUTCString()}....`);

Описание:

Когда я масштабируюсь web=1 все в порядке. Когда я масштабирую worker=1, я получаю странное поведение (я не смог найти какой-либо четкой информации об этом, хотя вопросы близки к этой ситуации). То, что я вижу в журналах heroku --tail, представляет собой две последовательности строк журнала, которые сообщают, что ==> up ==> разбиты и снова. И я получаю console.log(The time) дважды. Обычно через несколько минут он запускается снова.

Это вывод журнала:

2019-01-14T05: 21: 03.305114 + 00: 00 heroku [worker.1]: Запуск процесса с командой node domywork.js

2019-01-14T05: 21: 00.508617 + 00: 00 app [api]: масштабируется до сети @ 1: бесплатно работник @ 1: бесплатно от пользователя oren.nitzan@gmail.com

2019-01-14T05: 21: 03.995674 + 00:00 герою [работник.1]: Состояние изменено от начала до

2019-01-14T05: 21: 06.252942 + 00:00 герою [работник.1]: S Тейт изменен от до разбитого

2019-01-14T05: 21: 06.259465 + 00: 00 heroku [worker.1]: Состояние изменено от сбоя до запуска

2019-01-14T05: 21: 06.127660 + 00: 00 app [worker.1]: выполнять работу Пн, 14 Янв 2019 05:21:06 GMT .... ==> Примечание .. это вывод 1 !!!!

2019-01-14T05: 21: 06.235084 + 00: 00 heroku [worker.1]: процесс завершен с статус 0

2019-01-14T05: 21: 08.651606 + 00: 00 heroku [worker.1]: Запуск процесса с командой node domywork.js

2019-01-14T05: 21: 09.337206 + 00: 00 heroku [worker.1]: Состояние изменено от начала до

2019-01-14T05: 21: 11.468181 + 00: 00 heroku [worker.1]: Состояние изменено от до разбитого

2019-01-14T05: 21: 11,447 887 + 00: 00 heroku [worker.1]: процесс завершен со статусом 0

2019-01-14T05: 21: 11.370 138 + 00: 00 app [worker.1]: выполняя работу Пн, 14 января 2019 05:21:11 GMT .... ==> Примечание !! Второй выход

==> Примечание !!! Примерно через 10 минут он снова запускается !!

2019-01-14T05: 32: 31.031538 + 00:00 heroku [работник.1]: состояние изменено с разбился до начала 2019-01-14T05: 32: 33.816219 + 00:00 героку [работник.1]: Запуск процесса командой node domywork.js

.... и т. Д.

Конкретные вопросы:

  1. Что именно происходит, когда динамо масштабируется? Я понимаю, что он начинает свою рабочую (или веб) работу.

  2. Что такое последовательность состояния здоровья? Я считаю, что это должно быть "начало" и все.

  3. Что такое «раздавленное» состояние? это настоящая любовь или просто плохое описание чего-то другого? Потому что я не понимаю, почему я должен влюбляться в такую ​​простую задачу.

  4. Наконец ... если я что-то не так делаю, как я могу это исправить?

Обратите внимание, что я знаю, что логи не упорядочены. Я проверил время, и похоже, что рабочий был казнен, а потом произошла ошибка.

Симулятор Вопрос не ответил.

Спасибо.

Редактировать

После дальнейших раскопок я думаю, что нашел некоторую информацию, которая может помочь понять эту проблему.

Во-первых, я наткнулся на эту статью, в которой в одном из комментариев есть ссылки на документацию heroku о дроблении динамов:

Динамо «сбой» представляет любое событие, происходящее с процессом работает в динамо, который заставляет динамо остановиться. Это включает в себя процесс выхода с кодом выхода 0 (или любым другим кодом выхода)

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

Динозавры, которые работают как часть вашей динамо-формации, должны работать непрерывно.

Я еще проверю и опубликую свои выводы.

...