У меня есть несколько Java-процессов, запущенных на сервере Windows. Я заметил, что время от времени, когда я пытаюсь убить процесс, он остается живым. Причина, похоже, связана с сокетами в CLOSE_WAIT, связанными с процессом.
Есть идеи, почему некоторые сокеты остаются в CLOSE_WAIT после того, как я пытаюсь убить процесс?
Спасибо
Одна идея - вам нужно настроить параметры TCP, совсем не знакомые с окнами, но обычно вы хотите TIME_WAIT
или CLOSE_WAIT
интервал короче, поэтому соединения не задерживаются так долго. На загруженном сервере сокеты накапливаются на вас в CLOSE_WAIT
попасть в десятки тысяч и потреблять ресурсы без нужды ... Вы можете обнюхать интерфейс, winpcap и т. д. и посмотреть, отправляется ли плавник, правильное (без сброса) закрытие должно выглядеть так:
TCP: .... 0... = (No push)
TCP: .... .0.. = (No reset)
TCP: .... ..0. = (No SYN)
TCP: .... ...1 = FIN
Вы можете отслеживать или связывать приложение, например, если оно использует closesocket()
, убедитесь, что ваш rc равен 0 и т. д.
Процесс находится в состоянии непрерывного ожидания из-за проблемы с оборудованием и может потребовать перезагрузки. Это происходит только в том случае, если проблема в оборудовании.
............. Драмил Додежа http://dramildodeja.webnode.com/