Как загрузить большой файл из сети на веб-сервер без какого-либо влияния на производительность?

У меня есть веб-сервер (Java + Jooby + undertow), которому необходимо периодически загружать модель больших данных (около 200 МБ) из aws s3. И я также сделал все, что мог, чтобы избежать проблемы с gc: каждый раз, когда большие двоичные данные загружаются в заранее выделенный байтовый буфер, я также использую плоские буферы схемы данных с нулевым копированием для сериализации модели.

Но я обнаружил, что каждый раз, когда загружалась большая модель, возникал всплеск задержки запроса. Я даже попытался отключить десериализацию модели, но всплеск задержки все еще существует.

У меня вопрос: как я могу загрузить большую модель на веб-сервер без какого-либо влияния на производительность (задержку)?

1 ответ

Я обнаружил, что загрузка большого файла s3 (либо на локальный диск, либо в память) может вызвать всплески задержки обслуживания. А ограничение количества потоков загрузки может решить эту проблему. И, наконец, я перенес логику загрузки в другой процесс, который, похоже, решил эту проблему. Но когда загрузка процессора высока, мы все еще можем видеть небольшой всплеск.

Другие вопросы по тегам