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

Тайм-аут подключения сокета через vpn

У меня есть сервер с установленной по умолчанию CentOS 6.4. Он находится за VPN и брандмауэром, ни один из которых не управляется мной - ими управляет хостинговая компания.

Когда я оставляю ssh-клиент открытым на долгое время, не касаясь его (в cygwin с моего рабочего стола), в конечном итоге он зависает (Ctrl + C даже не работает), а затем, спустя гораздо более длительное время, он восстанавливается, но ssh соединение разрывается с Connection Reset by Peer ошибка.

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

java.io.IOException: Connection timed out
java.io.IOException: Broken pipe

В журнале клиента говорилось:

java.io.IOException: An established connection was aborted by the software in your host machine

Когда я вернулся, я нажал кнопку «повторно подключиться» на клиенте, не перезагружая ни одно из приложений, и они снова работают правильно, без проблем - так что это не похоже на то, что у одного из приложений закончились ресурсы или эквивалент.

Я думаю, что это скорее вопрос ServerFault, чем вопрос StackOverflow, из-за аналогичного поведения, которое я наблюдал в своих ssh-соединениях. Что могло быть причиной тайм-аута сети и что с этим делать?

для ssh просто настройте сеанс поддержки активности ssh

для шпатлевки (Windows) в свойствах в сеансе щелкните соединение и при отправке нулевых пакетов, чтобы сеанс оставался активным, вам необходимо установить секунды между сообщениями поддержки активности на желаемые секунды

для Linux Вы можете найти его в / etc / ssh / ssh_config

Хост * ServerAliveInterval 300 ServerAliveCountMax 2

Вероятно, ошибка «java.io.IOException: установленное соединение было прервано программным обеспечением на вашем хост-компьютере»

для этого есть много возможных проблем

Первое, что нужно посмотреть, это vpn и брандмауэр, некоторые из vpn используют "vpn-idle-timeout", который завершает сеанс любого пользователя, когда сеанс неактивен в течение указанного времени, а также обратите внимание, что межсетевой экран также может или не может взаимодействовать с другими устройство, использующее пакеты TCP Keep Alive.

со стороны приложения другое:

например, "система поддержания активности на уровне HTTP" на веб-сервере Oracle

Это позволяет настроить максимальное количество подключений, которые сервер позволяет одновременно ожидать перед закрытием самого старого подключения в консоли администратора.

но обратите внимание, что

«Если каждому запросу разрешено поддерживать соединение открытым на неопределенный срок, сервер может быть перегружен соединениями. В системах UNIX и Linux это может очень легко привести к переполнению таблицы файлов»

вы можете проверить эту документацию для справки

http://docs.oracle.com/cd/E19146-01/821-1834/gdpiq/index.html