Назад | Перейти на главную страницу

Как заставить приложение node.js возродиться после разрыва соединения с базой данных?

Я использую forever для запуска своей платформы блога Ghost на node.js. Насколько я понимаю, он всегда должен следить за тем, чтобы узел упал и перезапустил его автоматически. Однако, если я выдергиваю базу данных из-под приложения, она не восстанавливается должным образом, когда база данных снова становится доступной. Журналы следуют:

r31c.log:Error: Connection lost: The server closed the connection.
r31c.log:error: Forever detected script exited with code: 8
r31c.log:error: Forever restarting script for 1 time
r31c.log:ERROR: connect ECONNREFUSED, sql: create table `posts` (`id` int(11) unsigned  
                not null not null auto_increment primary key, `uuid` varchar(36) not   
                null, `title` varchar(150) not null, `slug` varchar(150) not null, 
                `markdown` text, `html` text, `image` text, `featured` tinyint(1) not 
                null default '0', `page` tinyint(1) not null default '0', `status` 
                varchar(150) not null default 'draft', `language` varchar(6) not null 
                default 'en_US', `meta_title` varchar(150), `meta_description` 
                varchar(200), `author_id` int(11) not null, `created_at` datetime not 
                null, `created_by` int(11) not null, `updated_at` datetime, 
                `updated_by` int(11), `published_at` datetime, `published_by` int(11)) 
                default character set utf8,alter table `posts` add unique 
                posts_slug_unique(`slug`), bindings: 
r31c.log:error: Forever detected script was killed by signal: null
r31c.log:          throw arguments[1]; // Unhandled 'error' event
r31c.log:Error: Cannot stop process that is not running.

В производственной среде я настоятельно рекомендую попробовать использовать Автономный пассажирский а не навсегда, чтобы повысить устойчивость и надежность экземпляров:

https://github.com/phusion/passenger/wiki/Phusion-Passenger%3A-Node.js-tutorial#wiki-deploying_standalone

Если вы хотите по-прежнему использовать вечно, вы можете внести изменения, написав что-то, проверяющее, работает ли вечный экземпляр, а если не работает, запускайте его.

Однако проверка подключения к БД должна быть практическим вопросом.