У меня есть сервер с установленной по умолчанию 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