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