Назад | Перейти на главную страницу

Тайм-аут запросов диапазона после 10 ГБ в сервлете apache или java

Кажется, есть проблема с обслуживанием больших файлов размером 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 секунд указывают на тайм-аут