У нас есть сервер IIS-7 в Windows 2008. Пользовательское веб-приложение записывает файлы, которые клиенты загружают в раздел NTFS. Каждый год у нас появляется от 40 000 до 60 000 папок по 2-20 файлов в каждой. Попытка открыть папку года в проводнике - проблема, и создание списка папок может занять несколько минут. Это заставило меня задуматься, не является ли это проблемой для системы в целом?
Думаю, более простой вопрос заключается в том, что если наше веб-приложение обращается к файлам напрямую по точному пути, то десятки тысяч файлов по-прежнему будут замедлять работу?
Windows (NTFS) не буферизует $ MFT на постоянной основе - в зависимости от объема памяти может потребоваться (очень хорошо, учитывая размер), чтобы прочитать его с диска, что может занять длительное время и остановиться все попытки доступа к тому.
Я борюсь с этим некоторое время, и единственное решение - уменьшить размер каталога. Вместо (плоский), например. \ 2017-07-20.log и так далее в одной огромной папке, используйте \ 2017 \ 07 \ 2017-07-20.log. Таким образом, ни одна папка не увеличивается в размере и - при условии, что к текущим папкам обращаются чаще - значительно улучшается локальность доступа к папкам.
Если вы не можете этого сделать, единственное средство - уменьшить размер $ MFT, удалив имена 8.3. , не используйте слишком сложные имена, списки управления доступом, аудит, ...
Еще одно средство - добавить в машину память для улучшения кэширования.