Порт внезапно закрылся. Как заново открыть?

Я написал программный модуль на PHP, который управляет сохранением данных в разных хранилищах данных (MySQL, ElasticSearch и Redis). Чтобы протестировать модуль, я создал несколько планов тестирования в Apache JMeter, включая те, которые выполняют много одновременных запросов. Тесты выполняются со стеком LAMP в виртуальной машине Ubuntu 14.04 LTS (Vagrant box).

Я заметил, что иногда порт 9200 (ElasticSearch) закрывается после определенного количества запросов. Это нормально, потому что я хочу протестировать сценарии, когда одно из хранилищ данных становится недоступным. Однако, чтобы проверить результаты теста, мне нужно снова открыть этот порт.

ElasticSearch все еще работает и слушает порт.

Ситуация перед тестовым прогоном

$ nmap -p 9200 localhost
(...)
PORT     STATE SERVICE
9200/tcp open  wap-wsp

$ sudo netstat -tlnp | grep '9200'
tcp6       0      0 :::9200                 :::*                    LISTEN      1057/java

Ситуация после пробного запуска

$ nmap -p 9200 localhost
(...)
PORT     STATE  SERVICE
9200/tcp closed wap-wsp

$ sudo netstat -tlnp | grep '9200'
tcp6       0      0 :::9200                 :::*                    LISTEN      1057/java

Вопрос

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

Есть ли команда для повторного открытия закрытого порта?

Я искал, но нашел только совет, как настроить iptables, я пробовал

$ sudo iptables -A INPUT -d 0/0 -s 0/0 -p tcp --dport 9200 -j ACCEPT

Но из того, что я понял, это только создает правило и не оказывает непосредственного влияния на порт:

$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9200

$ nmap -p 9200 localhost
(...)
PORT     STATE  SERVICE
9200/tcp closed wap-wsp

1 ответ

Решение

Я думаю, что это Java-приложение, прослушивающее порт 9200, просто сломалось, и вам нужно его перезапустить.

От netstat -nlpt | grep 9200, вы можете получить идентификатор процесса (рядом с /java в конце).

Затем с этим идентификатором запустите: ps aux | grep [process id] чтобы узнать, что такое Java-приложение, если вы еще не сделали этого сейчас, и просто перезапустите его, это должно решить ваши проблемы!

Другие вопросы по тегам