Распределение байтов, влияющих на передачу файлов в JAVA NIO
У меня есть файл 7Gig для отправки с использованием JAVA NIO в 2 сценариях:
Во-первых, клиент будет отправлять файл, и я выделю буфер размером 500 МБ, это быстро, это заняло всего 30 секунд.
Во-вторых, сервер будет отправлять файл, и я все еще использовал 500 МБ в качестве буфера, но мне потребовалось почти 30 минут, чтобы отправить файл, но когда я уменьшил распределение буфера, это улучшает производительность, пока я не достигну 1 МБ, и это заняло 1 минуту. отправить файл.
Но по первому сценарию я тоже уменьшаю его, но это просто снижает производительность при отправке файла.
Может кто-нибудь объяснить мне, почему это произошло?
1 ответ
Судя по опубликованной информации, это может быть предотвращение перегрузок TCP /Nagle при работе на стороне сервера. Чтобы проверить влияние на скорость, следуйте каждому подходу и отмечайте разницу на каждом шаге.
- Отключить Nagle через TCP_NO_DELAY
- Используйте разброс, соберите.
Примеры обоих можно найти здесь: http://bedrin.livejournal.com/207032.html