Как чтобы свести к минимуму потерю пакетов UDP

Я получаю ~ 3000 UDP-пакетов в секунду, каждый из которых имеет размер ~ 200 байт. Я написал Java-приложение, которое слушает эти UDP-пакеты и просто записывает данные в файл. Затем сервер отправляет 15000 сообщений с заранее заданной скоростью. После записи в файл в нем всего ~ 3500 сообщений.С помощью wirehark я подтвердил, что все 15000 сообщений были получены моим сетевым интерфейсом. После этого я попытался изменить размер буфера сокета (который изначально составлял 8496 байт):

(java.net.MulticastSocket)socket.setReceiveBufferSize(32*1024);

Это изменение увеличило количество сохраняемых сообщений до ~ 8000. Я продолжал увеличивать размер буфера до 1 МБ. После этого количество сохраненных сообщений достигло ~ 14400. Увеличение размера буфера до больших значений не приведет к увеличению количества сохраняемых сообщений. Я думаю, что достиг максимально допустимого размера буфера. Тем не менее, мне нужно захватить все 15000 сообщений, которые были получены моим сетевым интерфейсом.

Любая помощь будет принята с благодарностью. Заранее спасибо.

5
задан bezmax 25 November 2011 в 10:42
поделиться