У меня есть Java-неблокирующий сервер, который отслеживает все каналы сокетов в селекторе. Затем я устанавливаю 500 соединений с сервером и регулярно отправляю данные. Каждый фрагмент данных, который получает сервер, возвращается клиенту.
Проблема возникает, когда тест прекрасно работает в течение пары часов, а затем внезапно все сокеты, которыми управляет сервер, выдают исключение IOException для тайм-аута соединения при попытке прочитать данные.
Я изучил, не истощался ли поток клиента (и не отправлял ли он данные), но я уступаю потоку клиента, который перебирает все сокеты и записывает данные. Движение, кажется, постоянно течет нормально, но через некоторое время все просто вымирает. Есть идеи, что может быть причиной такого поведения?
Я работаю на платформе Linux с последней версией Java 6. Мое приложение запускает два потока: один для сервера и один для всех клиентов. Заранее спасибо!
Дополнительно:
Проблема касается Linux, а не моего кода. Когда я запускаю точно такую же настройку на Windows-боксе (на том же оборудовании), он никогда не истекает, но через несколько часов они начинают происходить в Linux. Это должно быть какая-то настройка TCP в Linux, которая вызывает это. Спасибо за предложение.