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

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

Я использую директиву «Alias» в 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>

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

Спасибо, если кто-то может помочь в выполнении этого требования.

Спасибо. .

-1
задан 6 April 2017 в 18:47
1 ответ

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

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

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

  • 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 и диском) и получить доступ к этому контенту по мере необходимости.

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

2
ответ дан 5 December 2019 в 19:22

Теги

Похожие вопросы