Как Вы имеете дело с большим количеством маленьких файлов?

Вы должны обратиться к документации, она охватывает мониторинг службы Windows и общий мониторинг процесса с proc.* пунктами.

Здесь вы можете найти поддерживаемый элемент по матрице платформы.

Существует внешний шаблон для systemd lld, его можно найти в Zabbix Share

26
задан 4 revs, 3 users 71% 22 September 2008 в 17:53
поделиться

10 ответов

Производительность NTFS сильно ухудшается после 10 000 файлов в каталоге. То, что Вы делаете, создают дополнительный уровень в иерархии каталогов, с каждым подкаталогом, имеющим 10 000 файлов.

Если это имеет значение, это - подход, который люди SVN проявили в версия 1.5 . Они использовали 1 000 файлов в качестве порога по умолчанию.

25
ответ дан 28 November 2019 в 06:10
поделиться

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

самая очевидная, общая группировка по дате и дает Вам, трехмногоуровневая вложенная структура (год, месяц, день) с относительно безопасным привязала количество файлов в каждом листовом (1-3k) каталоге.

, Даже если Вы в состоянии улучшить производительность файловой системы/файлового браузера, она кажется, что это - проблема, с которой Вы столкнетесь еще через 2 года, или 3 года... просто рассмотрение списка 0.3-1mil файлов собирается понести расходы, таким образом, может быть лучше в долгосрочной перспективе найти способы только посмотреть на меньшие подмножества файлов.

Используя инструменты любят, 'находят' (под cygwin, или mingw) может сделать присутствие дерева подкаталога надуманным вопросом при просмотре файлов.

1
ответ дан 28 November 2019 в 06:10
поделиться

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

при реальной необходимости в отдельном файле для каждого чтения необходимо отсортировать их в несколько подкаталогов вместо того, чтобы иметь всех их в том же каталоге. Можно сделать это путем создания иерархии каталогов и поместить файлы в различные в зависимости от имени файла. Таким образом, можно все еще сохранить и загрузить файлы, знающие просто имя файла.

метод, который мы используем, должен взять последние несколько букв имени файла, инвертировав их, и создав каталоги буквы из этого. Рассмотрите следующие файлы, например:

1.xml
24.xml
12331.xml
2304252.xml

можно отсортировать их в каталоги как так:

data/1.xml
data/24.xml
data/1/3/3/12331.xml
data/2/5/2/4/0/2304252.xml

Эта схема гарантирует, что у Вас никогда не будет больше чем 100 файлов в каждом каталоге.

3
ответ дан 28 November 2019 в 06:10
поделиться

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

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

В нашем случае мы в конечном счете перешли к системе, были все маленькие файлы для определенной даты, были добавлены в типе TAR вида с простыми разделителями для парсинга их. Дисковые файлы пошли от 1,2 миллионов до под несколькими тысячами. Они на самом деле загрузились быстрее, потому что NTFS не может обработать маленькие файлы очень хорошо, и диск был лучше способен кэшировать файл 1 МБ так или иначе. В нашем случае время доступа и синтаксического анализа для нахождения правильной части файла было минимально по сравнению с настоящим хранением и обслуживанием хранивших файлов.

3
ответ дан 28 November 2019 в 06:10
поделиться

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

кроме того, Вы могли переместить файлы, более старые, чем говорят, год, к различному (но все еще доступный) местоположение?

Наконец, и снова, это требует, чтобы Вы были в состоянии вычислить имена, Вы найдете, что непосредственно доступ к файлу намного быстрее, чем попытка открыть его с помощью проводника. Например, говоря
notepad.exe "P:\ath\to\your\filen.ame"
из командной строки должен на самом деле быть довольно быстрым, предположив знание пути файла, в котором Вы нуждаетесь, не имея необходимость получать список каталогов.

4
ответ дан 28 November 2019 в 06:10
поделиться

Вы могли попытаться использовать что-то как Твердая Файловая система.

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

http://www.eldos.com/solfsdrv/

4
ответ дан 28 November 2019 в 06:10
поделиться

Я видел значительные улучшения прошлого от разделения файлов во вложенную иерархию каталогов, например, сначала тогда вторая буква имени файла; тогда каждый каталог не содержит чрезмерное количество файлов. Управление целой базой данных является все еще медленным, как бы то ни было.

5
ответ дан 28 November 2019 в 06:10
поделиться

Проблема производительности вызывается огромной суммой файлов в единственном каталоге: как только Вы устраняете это, необходимо быть в порядке. Это не определенная для NTFS проблема: на самом деле с этим обычно встречаются с пользовательскими файлами дома/почты в больших системах UNIX.

Один очевидный способ решить этот вопрос, перемещает файлы в папки с именем на основе имени файла. Принятие всех Ваших файлов имеет имена файлов подобной длины, например, ABCDEFGHI.db, ABCEFGHIJ.db, и т.д., создают структуру каталогов как это:

ABC\
    DEF\
        ABCDEFGHI.db
    EFG\
        ABCEFGHIJ.db

Используя эту структуру, можно быстро определить местоположение файла на основе его имени. Если имена файлов имеют переменные длины, выберите максимальную длину и предварительно ожидайте, обнуляет (или любой другой символ) для определения каталога, которого принадлежит файл.

9
ответ дан 28 November 2019 в 06:10
поделиться

NTFS на самом деле будет работать прекрасный больше чем с 10 000 файлов в каталоге, пока Вы говорите ему прекращать создавать альтернативные имена файлов, совместимые с платформами Windows на 16 битов. NTFS по умолчанию автоматически создает '8 точек 3' имя файла для каждого файла, который создается. Это становится проблемой, когда существует много файлов в каталоге, потому что Windows смотрит на файлы в каталоге для проверки имени, которое они создают, уже не используется. Можно отключить '8 точек 3' именование путем устанавливания значения реестра NtfsDisable8dot3NameCreation к 1. Значение найдено в пути реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem. Безопасно внести это изменение, поскольку '8 точек 3' файлы имени только требуются программами, записанными для очень старых версий Windows.

перезагрузка А требуется, прежде чем эта установка вступит в силу.

30
ответ дан 28 November 2019 в 06:10
поделиться

Один общий прием должен просто создать горстку подкаталогов и разделить файлы.

, Например, Doxygen, автоматизированная программа документации кода, которая может произвести тонны страниц HTML, имеет опцию для создания двухуровневой глубокой иерархии каталогов. Файлы тогда равномерно распределяются через нижние каталоги.

3
ответ дан 28 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

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