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

Повышение производительности проверки подлинности Windows в IIS

Мы боремся с проблемами производительности на сайте ASP.NET MVC, который использует проверку подлинности Windows.

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

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

Используемый метод аутентификации - NTLM.

Как мы должны двигаться дальше, чтобы определить, почему аутентификация резко снижает производительность?

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

Мы использовали nltest /dclist:<domain_name> чтобы получить полный список всех контроллеров домена в среде клиентов, оказалось, что у них их 13. Используя nltest /dsgetdc:<domain_name> мы могли видеть, что всякий раз, когда сервер был подключен к основному контроллеру домена (PDC), аутентификация была медленной из-за высокого трафика / нагрузки на DC. Всякий раз, когда приложение использовало один из других двенадцати контроллеров домена, сайт работал нормально.

Мы могли воспроизвести проблему с выполнением поиска LDAP для определенного контроллера домена. Поскольку приложение выполняло много операций поиска LDAP, а также жесткое кодирование контроллера домена, отличного от PDC, могло помочь в ситуации, но привело бы к сценарию единой точки отказа.

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