On Sun, 21 Nov 2004, Konstantin N. Bezruchenko wrote:
> Заметил странность одну. Имеем файл, размер:
> 3721979904 байт (3Gb) его качают reget-ом в несколько потоков.
> Постоянно появляется ошибка:
>
> Error 2052 22:50:58 21.11.2004 Сервер неожиданно закрыл
> соединение
>
> Кроме того в логе заметил странную вещь, очень маленький размер блока
> который отдается в той сессия которая сразу-же закрывается.
>
> Вот лог:
>
> 1.2.3.4 - - [21/Nov/2004:10:43:09 -0800] "GET /backup.tar HTTP/1.1" 206 11680
> "-" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)"
> 1.2.3.4 - - [21/Nov/2004:10:43:10 -0800] "GET /backup.tar HTTP/1.1" 206 11680
> "-" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)"
> 1.2.3.4 - - [21/Nov/2004:10:43:20 -0800] "GET /backup.tar HTTP/1.1" 206 11680
> "-" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)"
> ...
>
> На маленьких файлах от 10 мегабайт до 1 гигабайта закачка проходит
> гладко, без ошибок.
>
> Это все на linux-2.4.20
sendfile off;
Проблема в том, что это ядро понимает файлы больше 2G, а sendfile() - нет.
sendfile64() появился в 2.4.21. Кстати, это Red Hat 9 ?
А что при этом пишется в error_log ?
Я хотел сделать так, чтобы на таких Линуксах первая часть файла до 2G
отдавалась бы sendfile()ом, а вторая - read()/write(), но пока этого нет.
Игорь Сысоев
http://sysoev.ru