Настройка правил ACL(Access Control List) занимает много времени, когда в каталоге много файлов

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

Фрагмент кода:

public void SetAccessControl()
{           
    ReaderWriterLockSlim rwlock = new ReaderWriterLockSlim();
    using (rwlock.Write())
    {  
        var directorySecurity = m_DirectoryInfo.GetAccessControl();

        //Adds Security rules to this Folder, Subfolders and Files
        directorySecurity.AddAccessRule(new FileSystemAccessRule(m_Identity, FileSystemRights.Write | FileSystemRights.Read,
            InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
            PropagationFlags.InheritOnly,
            AccessControlType.Allow));
        directorySecurity.AddAccessRule(new FileSystemAccessRule(m_Identity, FileSystemRights.Write | FileSystemRights.Read,
            AccessControlType.Allow));

        m_DirectoryInfo.SetAccessControl(directorySecurity);
    }
}

Ниже приведены результаты производительности:

  • 1000 файлов, время заняло: 683 мс

  • 10000 файлов, время: 5264.19мс

  • 100000 файлов, время: 52082.04мс

Есть ли способ справиться с этой проблемой производительности?

0 ответов

Другие вопросы по тегам