Я пытаюсь загрузить данные из SEC. Я загружаю их локально, загружаю их в Amazon S3, а затем удаляю файлы локально. Размер файла составляет около 10-100 МБ. После загрузки нескольких файлов скорость загрузки значительно замедляется.
Вот пример вывода, который у меня есть. Пожалуйста, игнорируйте вещи 190 of 5761
; Я начинаю его с 189, поэтому предыдущие записи не загружаются. Так что здесь происходит, что процесс запускается и загружает 3 файла, около 112 МБ, на высокой скорости. Затем он загружается только со скоростью 2-3 МБ / с и никогда не возвращается к первоначальной быстрой скорости (даже после 20 с лишним файлов, что является самым длинным периодом работы). Я также включил скорости загрузки - они не кажутся унизительными, не уверен, что это актуально.
Downloading via wget: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961220.nc.tar.gz
Elapsed: 0.934
Size was 33 MB. Avg speed was 26 MB/s.
Finished uploading. Speed was 32 MB/s.
Downloading 190 of 5761: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961223.nc.tar.gz (current total: 33 MB; average speed: 14 MB/s)
Downloading via wget: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961223.nc.tar.gz
Elapsed: 1.523
Size was 41 MB. Avg speed was 26 MB/s.
Finished uploading. Speed was 59 MB/s.
Downloading 191 of 5761: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961224.nc.tar.gz (current total: 74 MB; average speed: 16 MB/s)
Downloading via wget: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961224.nc.tar.gz
Elapsed: 0.479
Size was 38 MB. Avg speed was 79 MB/s.
Finished uploading. Speed was 63 MB/s.
Downloading 192 of 5761: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961226.nc.tar.gz (current total: 112 MB; average speed: 20 MB/s)
Downloading via wget: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961226.nc.tar.gz
Elapsed: 3.859
Size was 10 MB. Avg speed was 2 MB/s.
Finished uploading. Speed was 37 MB/s.
Downloading 193 of 5761: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961227.nc.tar.gz (current total: 122 MB; average speed: 12 MB/s)
Downloading via wget: https://www.sec.gov/Archives/edgar/Feed/1996/QTR4/19961227.nc.tar.gz
Elapsed: 8.327
Size was 30 MB. Avg speed was 3 MB/s.
Finished uploading. Speed was 55 MB/s.
Дополнительная информация:
- Я почти уверен, что это не ограничение скорости на сервере, потому что, когда я запускаю отдельную
wget
из командной строки для URL, который в данный момент загружается, загрузка происходит быстро
- Я не храню эти файлы в памяти.
- Я запускался несколько раз, и такое поведение происходит последовательно после 2-10 быстрых загрузок.
- Я удаляю файлы сразу после их загрузки на отдельный сервер.
- Использование ЦП и памяти не увеличивается во время выполнения процесса.
- Фактические файлы / URL кажутся неактуальными: я могу начать загрузку с любого индекса (вместо 189), и поведение такое же.
- Я запускаю это на Amazon EC2 с новой установкой + OpenJDK 1.8.
Я пробовал две разные реализации загрузки файлов, но обе версии имеют одну и ту же проблему. Вот мои реализации загрузки. Из реализации wget вы можете видеть, в частности, что это узкое место возникает в одном wget
процессе, так как время Elapsed: __
увеличивается после падения скорости загрузки.
Загрузка с помощью Apache FileUtils
public static File downloadFileFromURL(String tmpPrefix, String url) throws IOException {
File tmp = File.createTempFile(tmpPrefix, null);
tmp.deleteOnExit();
FileUtils.copyURLToFile(new URL(url), tmp);
return tmp;
}
Загрузка с помощью вызова wget
public static File downloadFileFromURLViaWget(String url) throws IOException, InterruptedException {
System.out.println("\tDownloading via wget: " + url);
long start = System.currentTimeMillis();
Process pr = Runtime.getRuntime().exec(new String[]{"wget", "-nv", url});
pr.waitFor();
System.out.println("\tElapsed: " + (System.currentTimeMillis() - start) / 1000.0);
String fileName = url.substring(url.lastIndexOf('/') + 1);
File f = new File(fileName);
f.deleteOnExit();
return f;
}
Я бы очень признателен за понимание этого вопроса. Я искал вокруг, но не нашел других сообщений об этой проблеме.