Использование веб-сайта с использованием активных групп каталогов замедляет сканирование с перерывами - PullRequest
0 голосов
/ 25 октября 2011

У меня есть веб-сайт asp.net mvc в интрасети.Доступ к сайту определяется группами в активном каталоге.Есть 4 разных группы, каждая из которых имеет разный доступ к сайту.У меня периодически возникали проблемы с работой сайта медленно.Сайт будет работать нормально в течение нескольких дней, а затем внезапно замедлится.У меня есть и тестовый сайт и производственный сайт.Когда происходит замедление, оба сайта затрагиваются одинаково.У меня также есть сайт, на котором тестовый сайт не имеет доступа к активному каталогу, и он работает без проблем, пока эти два сайта сканируют.У меня возникают проблемы с сайтами, работающими под учетной записью пользователя, поскольку приложение должно обращаться к другому общему ресурсу в интрасети, чтобы распечатать и объединить файлы PDF.Сайты работают в одном пуле приложений.Когда возникает проблема, все страницы одинаково медленны, даже страницы без активности базы данных.Когда возникает проблема, я сбрасываю IIS, перезагружаю веб-сайты и перезагружаю потоки.Единственное, что действительно решает проблему, это перезапуск сервера.Иногда требуется дополнительный перезапуск, чтобы вернуть сайт в нормальное состояние.Вот несколько вещей, которые я попробовал.Кажется, проблема возникает реже, но все же возникает.1. Сократите количество раз, когда я запрашиваю активный каталог.2. Сбросьте IIS при возникновении проблемы.Это не помогло.3. Перерабатывайте пулы приложений.4. Перезапустите службу sql server. 5. Убедитесь, что при обращении к серверам используются полные имена.Это, кажется, уменьшило некоторые проблемы.Не уверен, хотя.Я использую IIS 7 на сервере Windows 2008, 64-разрядный.

 user = ConfigurationManager.AppSettings["TravelCardUser.AD_GroupName"];
            approver = ConfigurationManager.AppSettings["TravelCardApprover.AD_GroupName"];
            maintenance = ConfigurationManager.AppSettings["TravelCardMaintenance.AD_GroupName"];
            admin = ConfigurationManager.AppSettings["TravelCardAdmin.AD_GroupName"];
            testuser = ConfigurationManager.AppSettings["TestUser"];


            List<string> adgroups = new List<string>();
            adgroups.Add(admin);
            adgroups.Add(approver);
            adgroups.Add(maintenance);
            adgroups.Add(user);
            this.groups = adgroups;


            List<string> groupmembership = new List<string>();

            foreach (var group in groups)
            {

                if (!String.IsNullOrEmpty(testuser))
                {
                    this.username = testuser;
                }
                else
                {
                    this.username = currentloggedinuser;
                }
                using (var ctx = new PrincipalContext(ContextType.Domain))
                using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, group))

                using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, username))
                {
                    if (groupPrincipal != null)
                    {
                        try
                        {
                            if (userPrincipal.IsMemberOf(groupPrincipal))
                            {
                                groupmembership.Add(group);

                            }
                        }
                        catch (Exception ex)
                        {
                            string theexception = ex.ToString();
                        }
                    }


                }

            }

Вот моя строка подключения ldap.

  <add name="ADConnectionString_UserRole" connectionString="LDAP://locationX/cn=TravelCardUser,ou=LocationXgroupsGroups,dc=acme,dc=us,dc=com" />

1 Ответ

0 голосов
/ 05 ноября 2011

Работа сервера замедляется каждые 3 или 4 дня, поэтому я закрыл пулы приложений для своих приложений и использовал Sysinternals для мониторинга процесса в течение 3 дней.

http://technet.microsoft.com/en-us/sysinternals/bb896653

Я вижучто процессы, связанные с сервером sequal и сервером Team Foundation, захватывают ресурсы, но не освобождают их.Кстати, я запускал свой код asp.net через Red Gate Memory Profiler, и утечек памяти не было.Теперь я должен выяснить, что делать с проблемой использования памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...