SystemdDoctor
служба не работает java порты

Tomcat: порт занят или служба не останавливается

Tomcat занимает два порта: для запросов и для команды остановки. Оба могут конфликтовать при нескольких экземплярах. Второй частый случай — долгое завершение, из-за которого служба добивается по таймауту.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Порт запросов или порт остановки занят

    При двух экземплярах на одной машине конфликтуют оба порта, и второй экземпляр не запускается.

  2. Служба не укладывается в таймаут остановки

    Завершение приложений с большим состоянием занимает время. При коротком таймауте процесс добивается, и данные могут потеряться.

  3. Права на каталоги работы

    Tomcat пишет в каталоги журналов, временных файлов и развёртывания. После ручного вмешательства владелец мог измениться.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Кто занимает порты Tomcat.

sudo ss -tlnp | grep -E ":(8080|8005)\s"

Журнал сервера приложений.

sudo tail -40 /var/log/tomcat9/catalina.out 2>/dev/null

Параметры остановки службы.

systemctl show tomcat9 -p TimeoutStopSec -p KillMode 2>/dev/null

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Порт запросов или порт остановки занят
Почему происходит
При двух экземплярах на одной машине конфликтуют оба порта, и второй экземпляр не запускается.
Как проверить
Посмотрите владельцев портов.
sudo ss -tlnp | grep -E ":(8080|8005)\s"
Как исправить
Задайте каждому экземпляру свои порты в настройках сервера. Порт остановки можно отключить, если он не используется.
2. Служба не укладывается в таймаут остановки
Почему происходит
Завершение приложений с большим состоянием занимает время. При коротком таймауте процесс добивается, и данные могут потеряться.
Как проверить
Посмотрите таймаут и записи об остановке.
systemctl show tomcat9 -p TimeoutStopSec 2>/dev/null
journalctl -u tomcat9 --no-pager | grep -iE "SIGKILL|timed out" | tail
Как исправить
Увеличьте таймаут остановки до времени корректного завершения приложений.
3. Права на каталоги работы
Почему происходит
Tomcat пишет в каталоги журналов, временных файлов и развёртывания. После ручного вмешательства владелец мог измениться.
Как проверить
Посмотрите владельцев каталогов.
sudo ls -ld /var/lib/tomcat9/{logs,work,webapps} 2>/dev/null
Как исправить
Верните владельцем пользователя службы. Каталоги можно объявить через параметры systemd, чтобы права выставлялись автоматически.

Пример вывода

Порт остановки занят вторым экземпляром. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

catalina[4300]: SEVERE [main] StandardServer.await Failed to create server shutdown socket on address [localhost] and port [8005]
catalina[4300]: java.net.BindException: Address already in use
systemd[1]: tomcat9.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Источники

  • Документация Tomcat документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено двумя экземплярами с одинаковыми портами.
    собственная проверка, systemd 255
    сверено 15 сентября 2026