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

Apache 2.2 на linux работает слишком медленно при отображении 250 000 файлов из одного каталога

Используя веб-браузер, мне нужно получить доступ к каталогу на сервере Linux, в котором хранится около 2 000 000 файлов.

Я использую директиву «Псевдоним» в apache для выполнения этого требования. Пожалуйста, смотрите ниже -

Alias /barcodes/ "/m01/apps/codes/barcodes/"

<Directory "/m01/apps/codes/barcodes/">
Options +Indexes
IndexOptions +TrackModified
AllowOverride None
Order allow,deny
Allow from all
#Doing IndexOrderDefault so to see the files in a descending order (by date/timestamp)
IndexOrderDefault Descending Date
</Directory>

Проблема. Веб-обозревателю требуется много времени для отображения файлов из каталога, и он становится слишком медленным для доступа.

Признайте, если кто-то может помочь в достижении этого требования.

Спасибо..

Так как @Свен указывает, что это невозможно с вашей текущей настройкой.

Прямо сейчас существует ряд возможных узких мест, но наиболее вероятным из них является сам ваш диск.

Для каждого запроса к вашей индексной странице:

  • apache необходимо запросить на диске содержимое папки
  • Затем apache необходимо запросить диск для получения сведений о каждой записи
  • что заставляет ОС также выполнять такие действия, как поиск UID / GID, чтобы попытаться предоставить текстовые, а не числовые значения

В зависимости от ваших реальных потребностей одним из возможных решений может быть создание вашего собственного индексного файла программным способом, избегая каждый раз сканирования всего каталога.

Что-то вроде этого уродливого и непроверенного "скрипта":

#!/bin/bash

DATE="$( date -I )"

echo "<html><head><title>File listing at $DATE <title></head>" > index.html
echo "<body><ul>" >> index.html
for x in `ls -1 FOLDER`; do
    echo "<li><a href=\"/path/to/$x\">$x<a></li>" >> index.html
done

echo "</ul></body></html" >> index.html

Затем пользователь может выбрать файл из списка (один файл, читаемый apache и диском) и получить доступ к этому контенту по мере необходимости.

Очевидно, вам, вероятно, захочется чего-то более приятного, но общая идея максимального сокращения операций чтения на запрос, надеюсь, ясна.