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

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

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

Я заметил, что иногда порт 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

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

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

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