Кажется, есть проблема с обслуживанием больших файлов размером 10+ ГБ с запросами байтового диапазона на нашем 64-разрядном сервере RHEL5. Проблема, которую я замечаю, заключается в том, что для диапазонов, которые пересекают отметку 10 ГБ (десять гигабайт), время ожидания запросов диапазона истекает, тогда как запросы диапазона в любой точке файла до этого выполняются быстро.
Я тестировал tomcat с помощью сервлета java и apache HTTPD (2.2), и он не работает как на
Если я установлю тест, который выполняет запросы диапазона завитков для каждого диапазона до 10 ГБ, то он терпит неудачу ровно на 10 ГБ (или, может быть, точнее, 9,313231 ГБ?)
$ curl -w '%{time_total}\n' --header 'Range: bytes=9999900000-10000000000' http://ourserver.com/bam/file.bam --fail --silent --show-error
22.840
curl: (56) Recv failure: Operation timed out
Именно в этот момент запросы диапазона всегда терпят неудачу. Любой запрос диапазона до 10 ГБ в файле выполняется очень быстро и без ошибок.
Я предполагаю, что тот факт, что это происходит как в tomcat, так и в apache, заставляет меня подозревать, что это не проблема конфигурации apache или tomcat, поэтому есть ли какие-либо подсказки о том, что может происходить?
Скрипт для тестирования
#!/bin/bash
set -evx
begin=9900000000
grab=100000
iter=100000
max=16000000000
url=$1
for i in `seq -f "%.0f" $begin $iter $max`; do
i2=$(($i+$grab))
echo -en "$i\t$i2\t";
curl -so /dev/null -w "%{time_total}\n" --header "Range: bytes=$i-$i2" $url --fail --silent --show-error
done;
изображение всего диапазона запросов до 10 ГБ, где 20 секунд указывают на тайм-аут