Я пытаюсь устранить неполадки приложения Node + Mongo, имеющегося у нас в экземпляре AWS EC2.
Это началось с сбоя.Краткое расследование показало, что процесс mongod
потерпел крах.Пытаясь запустить его, мы обнаружили, что ошибки были почти идентичны этой проблеме.
Успешно увеличив дисковое пространство для экземпляра, мы смогли запустить mongod
.
Однако, когда мы запускаем приложение с sudo pm2 start npm -- start
, оно запускается, но, похоже, не прослушивает порт 80.
Вот вывод команды netstat -tulpn
:
[ec2-user@ip-xxx-xx-xx-xxx ~]$ netstat -tulpn
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:40863 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 :::59195 :::* LISTEN -
tcp 0 0 :::111 :::* LISTEN -
tcp 0 0 :::22 :::* LISTEN -
Как видите, MongoDB, похоже, прослушивает порт 27017. Однако мы не можем подключиться к нему с помощью Robomongo с наших локальных компьютеров.
Более того, как я уже упоминал выше, приложение Node, похоже, не слушает.То есть мы пытались запустить его, используя npm start
, node app.js
и пару других, но безрезультатно.
Мой вопрос: что может происходить и что я могу сделать, чтобы устранить его?Единственная идея, которая у меня есть на данный момент, это попытаться получить доступ к MongoDB на сервере из консоли и посмотреть, работает ли он.Я попробую это в ближайшее время.Тем не менее, я понимаю, что независимо от того, работает ли БД, само приложение должно показывать некоторые признаки жизни.
Я могу предоставить более подробную информацию, если необходимо, особенно от app.js
.
Редактировать:
Как указано в комментарии, я запустил ps -ef | grep -i node
со следующим выводом:
[ec2-user@ip-xxx-xx-xx-xxx ~]$ ps -ef | grep -i node
ec2-user 3179 3108 0 03:50 ? 00:00:11 node /home/ec2-user/the_app_in_question/app.js
root 5187 5181 0 04:07 ? 00:00:01 node ./bin/www
ec2-user 25925 25903 0 13:18 pts/1 00:00:00 grep --color=auto -i node
Команда 'netstat', но с sudo
:
[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 5187/node
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2713/sendmail
tcp 0 0 0.0.0.0:40863 0.0.0.0:* LISTEN 2246/rpc.statd
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 2754/mongod
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2664/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3073/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3031/sshd
tcp 0 0 :::59195 :::* LISTEN 2246/rpc.statd
tcp 0 0 :::111 :::* LISTEN 3073/rpcbind
tcp 0 0 :::22 :::* LISTEN 3031/sshd
Входящие правила для этого экземпляра:
80 tcp 0.0.0.0/0 ✔
5432 tcp 0.0.0.0/0 ✔
8000 tcp 0.0.0.0/0 ✔
22 tcp 0.0.0.0/0 ✔
9775 tcp 0.0.0.0/0 ✔
20-21 tcp 0.0.0.0/0 ✔
54763 tcp 0.0.0.0/0 ✔
3000 tcp 0.0.0.0/0 ✔
443 tcp 0.0.0.0/0 ✔