forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.LINUX.CHAINIK

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 17.08.2016, 16:42
Oleg Redut
Guest
 
Сообщений: n/a
По умолчанию port

Oleg Redut написал(а) к All в Apr 15 12:50:46 по местному времени:

Доброе (current) время суток, All!

Имеется ява-приложение. Запускается в screen. Иногда зависает и невыходит нормально. Приходится делать kill для screen с этим процессом.
Но при повторном запуске сообщает, что порт, который оно использовала - уже занят. Приходится тупо перегружать машину. Можно ли освободить порт какой-то командой? Чтобы в командный файл запихнуть перед запуском явы.

Что я могу еще сказать?..
Oleg

... AKA oleg(&)redut.info AKA ICQ 28852595
--- GoldED+/W32-MINGW 1.1.5-b20120515 (пока работает)
Ответить с цитированием
  #2  
Старый 17.08.2016, 16:42
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Re: port

Serguei E. Leontiev написал(а) к Oleg Redut в Apr 15 04:33:41 по местному времени:

From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Привет Олег,

От 13 апреля 2015 г., 12:50:46 в fido7.ru.linux.chainik ты писал:
OR> Имеется ява-приложение. Запускается в screen. Иногда
OR> зависает и невыходит нормально. Приходится делать kill для
OR> screen с этим процессом. Но при повторном запуске сообщает,
OR> что порт, который оно использовала - уже занят. Приходится тупо
OR> перегружать машину. Можно ли освободить порт какой-то командой?
OR> Чтобы в командный файл запихнуть перед запуском явы.

Заметим, что при определённых условиях, в течении некоторого времени
после закрытия сокета процессом и/или убийства самого процесса, сокет
может находится в состояниях ожидания, которые блокируют создание сокета
на том же самом порту.

Так что перезагружаться не обязательно, достаточно просто подождать
некоторое время. Однако, если ждать нет сил, то можно заняться
"настройкой" TCP Linux.

Например, если ты имеешь дело с состоянием TIME_WAIT, что можно
определить командой netstat, то полезно будет прочитать документацию по
следующими переменным ядра:

sysctl net.ipv4.tcptwrecycle
sysctl net.ipv4.tcp_timestamps
sysctl net.ipv4.tcptwreuse
sysctl net.ipv4.tcp_rfc1337


--
Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru


--- ifmail v.2.15dev5.4
Ответить с цитированием
  #3  
Старый 17.08.2016, 16:42
Oleg Redut
Guest
 
Сообщений: n/a
По умолчанию port

Oleg Redut написал(а) к Alexey Vissarionov в Apr 15 10:58:46 по местному времени:

Доброе (current) время суток, Alexey!

OR>> Можно ли освободить порт какой-то командой? Чтобы в командный
OR>> файл запихнуть перед запуском явы.

AV> killall -15 java && sleep 2 && killall -w -9 java

Это убивает всю яву, а не освобождает указанный порт. :-(
Если запущены 2-3 процесса с явой на разных портах и один я пытаюсь перезапустить, то это не вариант.
Кстати, если я убиваю нормально работающий процесс, то порт не захватывается. А если процесс крэшнулся по внутренним причинам и не работает нормальный выход из него, то тогда после убиения и порт не освобождается.

Что я могу еще сказать?..
Oleg

... AKA oleg(&)redut.info AKA ICQ 28852595
--- GoldED+/W32-MINGW 1.1.5-b20120515 (пока работает)
Ответить с цитированием
  #4  
Старый 17.08.2016, 16:42
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Re: port

Serguei E. Leontiev написал(а) к Oleg Redut в Apr 15 17:04:42 по местному времени:

From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Олег, привет,

Oleg Redut <Oleg.Redut@f111.n5000.z2.fidonet.org> wrote:
>>> Можно ли освободить порт какой-то командой? Чтобы в командный
>>> файл запихнуть перед запуском явы.
>
>> killall -15 java && sleep 2 && killall -w -9 java
>
> Кстати, если я убиваю нормально работающий процесс, то порт не
> захватывается. А если процесс крэшнулся по внутренним причинам и не работает

Похоже на то, ждёт он чего-то, наверное, разрыва соединения от клиента :)

> нормальный выход из него, то тогда после убиения и порт не освобождается.

sleep 240 # 2*msl

Не поможет ли?

--
Успехов, Сергей Леонтьев, <http://www.cryptopro.ru> (NewsTap)
--- ifmail v.2.15dev5.4
Ответить с цитированием
  #5  
Старый 17.08.2016, 16:42
Eric Pozharski
Guest
 
Сообщений: n/a
По умолчанию Re: port

Eric Pozharski написал(а) к Oleg Redut в Apr 15 09:52:58 по местному времени:

with <MSGID2=3A5000=2F111552c9f67@fidonet.org> Oleg Redut wrote:

SKIP

OR> Это убивает всю яву, а не освобождает указанный порт. :-( Если
OR> запущены 2-3 процесса с явой на разных портах и один я пытаюсь
OR> перезапустить, то это не вариант.

ps `pgrep -t pts/#`

Я screen не пользуюсь, возможно нужно быть пессимистом, ожидать краха и
выяснять номер pts заранее. Тогда можно прибить адресно. Но...

OR> Кстати, если я убиваю нормально работающий процесс, то порт не
OR> захватывается. А если процесс крэшнулся по внутренним причинам и не
OR> работает нормальный выход из него, то тогда после убиения и порт не
OR> освобождается.

Может это java-way? (спекулирую) java форкает еще один процесс,
который собсно держит порт. И этот процесс на крах родителя не обращает
внимания. Это может быть by design. Однако lsof в помощь.

--
Torvalds' goal for Linux is very simple: World Domination
Stallman's goal for GNU is even simpler: Freedom
--- slrn/pre1.0.0-18 (Linux)
Ответить с цитированием
  #6  
Старый 17.08.2016, 16:42
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Re: port

Serguei E. Leontiev написал(а) к Eric Pozharski в Apr 15 22:21:47 по местному времени:

From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Эрик, привет,

Eric Pozharski <Eric.Pozharski@p101.f94.n463.z2.fidonet.org> wrote:
> Может это java-way? (спекулирую) java форкает еще один процесс,
> который собсно держит порт. И этот процесс на крах родителя не обращает

Вот антиресно, неужто в новых версиях Java появился fork()?

--
Успехов, Сергей Леонтьев, <http://www.cryptopro.ru> (NewsTap)
--- ifmail v.2.15dev5.4
Ответить с цитированием
  #7  
Старый 17.08.2016, 16:42
Eric Pozharski
Guest
 
Сообщений: n/a
По умолчанию Re: port

Eric Pozharski написал(а) к Serguei E Leontiev в Apr 15 09:11:47 по местному времени:

with <1187500665@lnfm1.sai.msu.ru> Serguei E Leontiev wrote:

>> Может это java-way? (спекулирую) java форкает еще один процесс,
>> который собсно держит порт. И этот процесс на крах родителя не
SEL> Вот антиресно, неужто в новых версиях Java появился fork()?

Не знал, что там все так запущено (хотя, может быть это by design).
Тогда только читать lsof (с этого надо было начинать).

--
Torvalds' goal for Linux is very simple: World Domination
Stallman's goal for GNU is even simpler: Freedom
--- slrn/pre1.0.0-18 (Linux)
Ответить с цитированием
  #8  
Старый 17.08.2016, 16:42
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Re: port

Serguei E. Leontiev написал(а) к Eric Pozharski в Apr 15 14:13:26 по местному времени:

From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Привет Эрик,

От 17 апреля 2015 г., 9:11:47 в fido7.ru.linux.chainik ты писал:
SEL>> Вот антиресно, неужто в новых версиях Java появился fork()?
EP> Не знал, что там все так запущено (хотя, может быть это by
EP> design). Тогда только читать lsof (с этого надо было начинать).

:) И, если порт принадлежит соединению в TIME-WAIT, FIN_WAIT2, ..., lsof
обнаружит на нём "пустоту"? Или есть варианты?

--
Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru


--- ifmail v.2.15dev5.4
Ответить с цитированием
  #9  
Старый 17.08.2016, 16:42
Eric Pozharski
Guest
 
Сообщений: n/a
По умолчанию Re: port

Eric Pozharski написал(а) к Serguei E Leontiev в Apr 15 17:00:53 по местному времени:

with <1187500675@ddt.demos.su> Serguei E Leontiev wrote:

SEL>>> Вот антиресно, неужто в новых версиях Java появился fork()?
EP>> Не знал, что там все так запущено (хотя, может быть это by
EP>> design). Тогда только читать lsof (с этого надо было начинать).

SEL> >:) И, если порт принадлежит соединению в TIME-WAIT, FIN_WAIT2, ...,
SEL> lsof обнаружит на нём "пустоту"? Или есть варианты?

su? Для CLOSE-WAIT работает, LAST-ACK -- упустил. Для TIME-WAIT и
прочих проверить не могу -- у меня нету.

Но я, теперь, не понимаю другого. TIME-WAIT это для исходящих? Но для
исходящих это не должно быть проблемой -- открывается любой свободный.
Открывать для исходящих всегда один и тот же порт -- это java-way или
именно этот код так делает? (Проверить не на чем -- у меня java нету.)

p.s. гыгы, прямо сейчас у vim'а открыт nntp (в CLOSE-WAIT). Что-то в
slrn все таки не кошерное есть.

--
Torvalds' goal for Linux is very simple: World Domination
Stallman's goal for GNU is even simpler: Freedom
--- slrn/pre1.0.0-18 (Linux)
Ответить с цитированием
  #10  
Старый 17.08.2016, 16:42
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Re: port

Serguei E. Leontiev написал(а) к Eric Pozharski в Apr 15 03:56:27 по местному времени:

From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Привет Эрик,

От 18 апреля 2015 г., 17:00:53 в fido7.ru.linux.chainik ты писал:
SEL>> >:) И, если порт принадлежит соединению в TIME-WAIT,
SEL>> FIN_WAIT2, ..., lsof обнаружит на нём "пустоту"? Или есть
SEL>> варианты?
EP> su? Для CLOSE-WAIT работает, LAST-ACK -- упустил. Для
EP> TIME-WAIT и прочих проверить не могу -- у меня нету.
EP> Но я, теперь, не понимаю другого. TIME-WAIT это для исходящих?
EP> Но для исходящих это не должно быть проблемой -- открывается
EP> любой свободный. Открывать для исходящих всегда один и тот же
EP> порт -- это java-way или именно этот код так делает?

Если память меня не подводит TIME-WAIT - это для того, кто соединение
закрывает (кто сокет закрывает или сам безвременно умирает).

На счёт java-way, да и насчёт POSIX-way (для тех, кто боится
SO_REUSEADDR). IMНO, единственный "платформенно независимый" путь
избежания состояния TIME-WAIT для сервера - это побуждать клиента
разрывать соединение. Однако, при сетевых проблемах, это может приводить
к длительному процессу завершения сервера (в просторечии "зависанию").
Если в этот момент такой "платформенно независимый" сервер убить -
получим TIME-WAIT и невозможность повторного запуска в течении примерно
2*MSL секунд :)

Windows/Solaris/Linux/FreeBSD-way путь обеспечения возможности быстрого
рестарта - это использовать специальные флажки.

Как вариант, для Linux/FreeBSD можно настраивать TCP при помощи sysctl.

--
Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru


--- ifmail v.2.15dev5.4
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:26. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot