Порт внезапно закрылся. Как заново открыть?
Я написал программный модуль на 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-приложение, если вы еще не сделали этого сейчас, и просто перезапустите его, это должно решить ваши проблемы!