Приложение Openshift NodeJS + MongoDB внезапно останавливается

Недавно я начал использовать OpenShift в качестве масштабируемой платформы для приложения NodeJS + MongoDB. У меня все заработало, за исключением того, что через некоторое время (в основном в течение нескольких часов или дней) мое приложение внезапно становится недоступным. Я думаю, что есть две причины остановки моего приложения. Одна из причин заключается в том, что время ожидания подключения к MongoDB истекло, что, вероятно, легко исправить, проверив, подключена ли база данных до использования базы данных.

Однако другая причина заключается в том, что NodeJS внезапно перестает принимать новые запросы. Я не совсем уверен, что происходит и в чем причина такого поведения, но когда это происходит, мне приходится вручную перезапускать приложение через ssh, а в продакшене это неприемлемо.

Поскольку я не получаю никаких ошибок, я не могу предоставить больше подробностей, за исключением того, что у меня (вероятно) есть масштабируемое приложение, в настоящее время использующее 2 шестерни: одну для приложения NodeJS и одну для базы данных MongoDB. Я использую MongooseJS для подключения к базе данных. В настоящее время я все еще пользуюсь бесплатным планом, но когда появится больше трафика, я, вероятно, выберу серебряный план (при условии, что масштабирование действительно работает).

Я надеюсь, что кто-то может дать мне совет или решение.

Искренне,

Хилке Брон


person Hylke    schedule 06.03.2014    source источник


Ответы (1)


Итак, есть несколько вещей, о которых вы должны знать. Первый — бездействие. Если ваше приложение не получает никаких внешних HTTP-запросов в течение 48 часов, оно будет бездействовать. Затем, как только будет сделан http-запрос, приложение автоматически вернется в онлайн.

Если вы часто получаете внешние HTTP-запросы, то следующее, что нам нужно проверить, — это журналы для вашего приложения. Вы можете проверить журналы для своего приложения, но работающего rhc tail <yourappname>.

person niharvey    schedule 06.03.2014
comment
Я знаю о холостом ходе, но это не так, потому что это произошло сегодня вечером снова, в течение 2 часов после перезапуска приложения, потому что оно перестало отвечать на запрос, приложение снова перестало отвечать на запросы. Я проверил журналы, но не через rhc tail ‹myappname›, а через tail_all, когда я вхожу в оболочку ssh, используя шпатлевку и некоторые хэши ключей. Я предполагаю, что это то же самое, и эти журналы ничего мне не говорят. Если я неправильно проверяю свои файлы журналов, сообщите мне, но я не вижу там ничего странного. - person Hylke; 07.03.2014
comment
Поскольку ваше приложение является масштабируемым, база данных и фреймворк будут находиться на разных передачах. Вы проверяете журналы на обеих передачах? Если нет, попробуйте запустить rhc app show rails4 --gears, а затем подключитесь к базе данных по ssh и посмотрите, нет ли там ошибок. - person niharvey; 07.03.2014
comment
Я попытался подключиться к базе данных по ssh, но это дало мне ошибку идентификации, вероятно, потому, что я не понимаю, как установить правильный закрытый ключ с помощью шпатлевки (я вроде как новичок в этих вещах), поэтому, если я не могу понять это завтра, плохо пусть придет тот, кто может. Но я получал уведомления, когда база данных не работала, у меня это зарегистрировано, и эти журналы никогда не появляются, поэтому я не думаю, что проблема в базе данных (но я не узнаю, пока не проверю это, конечно). Итак, гипотетически, есть ли логическая простая вещь, чтобы проверить, действительно ли база данных не является проблемой? - person Hylke; 07.03.2014
comment
Я не вижу каких-либо необычных журналов внутри моей базы данных: Thu Mar 6 22:07:44.153 [DataFileSync] flushing mmaps took 10231ms for 6 files Fri Mar 7 03:35:55.269 [conn248] authenticate db: somevalue { authenticate: 1, user: "somevalue", nonce: "somevalue", key: "somevalue" } Fri Mar 7 03:53:49.409 [DataFileSync] flushing mmaps took 14483ms for 6 files - person Hylke; 07.03.2014