У меня самое простое приложение 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
.... и т. Д.
Конкретные вопросы:
Что именно происходит, когда динамо масштабируется? Я понимаю, что он начинает свою рабочую (или веб) работу.
Что такое последовательность состояния здоровья? Я считаю, что это должно быть "начало" и все.
Что такое «раздавленное» состояние? это настоящая любовь или просто плохое описание чего-то другого? Потому что я не понимаю, почему я должен влюбляться в такую простую задачу.
Наконец ... если я что-то не так делаю, как я могу это исправить?
Обратите внимание, что я знаю, что логи не упорядочены. Я проверил время, и похоже, что рабочий был казнен, а потом произошла ошибка.
Симулятор Вопрос не ответил.
Спасибо.
Редактировать
После дальнейших раскопок я думаю, что нашел некоторую информацию, которая может помочь понять эту проблему.
Во-первых, я наткнулся на эту статью, в которой в одном из комментариев есть ссылки на документацию heroku о дроблении динамов:
Динамо «сбой» представляет любое событие, происходящее с процессом
работает в динамо, который заставляет динамо остановиться. Это включает в себя
процесс выхода с кодом выхода 0 (или любым другим кодом выхода)
Итак, на данный момент я понимаю, что, поскольку мой простой тестовый код для работника просто приводит к тому, что его процесс завершается и, следовательно, выходит из строя.
ТакжеЯ думаю, что часть ответа заключается в том, что рабочий должен быть настроен как фоновый рабочий и выполнен планировщиком ( Также здесь ):
Динозавры, которые работают как часть вашей динамо-формации, должны работать непрерывно.
Я еще проверю и опубликую свои выводы.