Скорее всего, это не проблема Java.
Код, который вы разместили, на самом деле не выполняет никаких операций ввода-вывода по сети - он просто определяет URL-адрес и передает его (предположительно, Apache Commons)') FileUtils.copyURLToFile
.Как обычно в популярных сторонних библиотеках, если бы в этом методе была ошибка, которая вызывала медленную пропускную способность во всех, кроме самых необычных ситуациях, он уже был бы идентифицирован (и, мы надеемся, исправлен).
Таким образом, проблемасобирается лежать в другом месте.Получаете ли вы ожидаемые скорости при доступе к ресурсу обычными методами HTTP (например, в браузере)?Если нет, то на уровне ОС существует универсальная проблема.В противном случае я бы взглянул на политики в вашей сети.
На ум приходят две возможные причины:
- Очевидная причина - это своего рода формирование трафика - деприоритизация вашей сетипакеты, которые приходят из вашего Java-приложения (по потенциально произвольной причине).Вы должны увидеть, как это настроено, и просмотреть его журналы, чтобы убедиться, что это так.
- Проблема связана с DNS.Если Java использует основной сервер, который либо заблокирован, либо невероятно медленный, то преобразование этого URL-адреса в IP-адрес и начало фактической передачи может занять несколько секунд.Однажды у меня была похожая проблема, когда брандмауэр молча отбрасывал пакеты на один сервер, и процесс Java переключался на вторичный сервер в течение трех секунд (за поиск!).
В любом случае,это почти наверняка не код Java, который виноват.