Рабочий Heroku выполнялся дважды, когда начинал (масштабировал) отчет об изменении состояния с начала до до и снова
У меня самое простое приложение для узлов. Нет планировщика.
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
я получаю странное поведение (я не смог найти какой-либо четкой информации об этом, хотя вопросы близки к этой ситуации). Что я вижу в логах героку --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 приложение [api]: масштабировано до сети @1: свободный работник @1: бесплатно пользователем oren.nitzan@gmail.com
2019-01-14T05: 21: 03.995674 + 00: 00 heroku [worker.1]: состояние изменилось с начала до
2019-01-14T05:21:06.252942+00:00 heroku[worker.1]: состояние изменилось с до сбойного
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 [worker.1]: выполнять работу Понедельник, 14 января 2019 05:21:11 GMT.... ==> Примечание!! Второй выход
==> Примечание!!! Примерно через 10 минут он снова работает!!
2019-01-14T05: 32: 31.031538 + 00: 00 heroku [worker.1]: состояние изменено с аварийного на начальное 2019-01-14T05:32:33.816219+00:00 heroku[worker.1]: запуск процесса с помощью команды
node domywork.js
.... и так далее
Конкретные вопросы:
Что именно происходит, когда динамо масштабируется? Я понимаю, что это запускает его рабочую (или веб) работу.
Что такое последовательность здоровых состояний? Я считаю, что это должно быть "начало" и все.
Что такое "раздавленное" состояние? это настоящая любовь или просто плохое описание чего-то другого? Потому что я не понимаю, почему я должен влюбляться в такую простую задачу.
Наконец... если я что-то не так делаю, как я могу это исправить?
Обратите внимание, что я знаю, что журналы не заказаны. Я проверил время, и похоже, что работника казнили, а потом произошла давка.
Вопрос о симуляторе остался без ответа.
Благодарю.
редактировать
После дальнейших раскопок я думаю, что нашел некоторую информацию, которая может помочь понять эту проблему.
Во-первых, я наткнулся на эту статью, где в одном из комментариев есть ссылки на документацию героку о динамовом крушении:
"Отказ" динамо представляет собой любое событие, происходящее с процессом, запущенным в динамо, которое вызывает остановку динамометра. Это включает процесс, завершающийся с кодом выхода 0 (или любым другим кодом выхода)
Итак, на данный момент, я понимаю, что, поскольку мой простой тестовый код для работника просто приводит к тому, что его процесс завершается и, следовательно, выходит из строя. Кроме того, я думаю, что часть ответа заключается в том, что рабочий должен быть настроен как фоновый рабочий и выполнен планировщиком ( также здесь):
Динозавры, которые работают как часть вашей динамо формации, должны работать непрерывно.
Я проверю это далее и опубликую свои выводы.