У меня есть неблокирующий сервер Java, который отслеживает все каналы сокетов в селекторе. Затем я устанавливаю 500 подключений к серверу и регулярно отправляю данные. Каждая часть данных, получаемых сервером, возвращается обратно клиенту.Неполадка тайм-аута разблокировки Java Linux
Проблема заключается в том, что тест работает чудесно в течение нескольких часов, а затем внезапно постепенно все сокеты, которыми управляет сервер, бросают соединение IOException при попытке чтения данных.
Я изучил, был ли поток клиентов голоден (и не отправлять данные), но я уступаю клиентскому потоку, который выполняет итерацию через все сокеты и выписывает данные. Трафик, кажется, постоянно течет должным образом, но через какое-то время он просто умирает. Какие идеи могут вызывать такое поведение?
Я работаю на платформе Linux с последней итерацией Java 6. Мое приложение запускает два потока: один для сервера и один для всех клиентов. Заранее спасибо!
Дополнительная информация: Проблема связана с Linux, а не с моим кодом. Когда я запускаю ту же самую настройку в окне Windows (на одном и том же аппаратном обеспечении), это никогда не истекает, но через несколько часов они начинают возникать в Linux. В Linux должен быть какой-то параметр TCP, который вызывает его. Спасибо за предложение.
У вас есть код для показа нам? –
Также вывод клиента и сервера 'netstat -a on'? Любые сокеты в несчастливом состоянии? –
Не могли бы вы вывести вывод ex.printStackTrace() этого IOException? – nos