AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.12.2010, 15:50   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Melaen Посмотреть сообщение
Добрый день всем!

Столкнулись с проблемой производительности при массовом обновлении полей у объектов через веб-сервис CRM.

Пример: консольное приложение.

Исходный код:

Код:
        static CrmSdk.CrmService crmService = new CrmSdk.CrmService();
        static void Main(string[] args)
        {
            string Server = "servername";
            string orgName = "orgname";
            CrmAuthenticationToken token = new CrmAuthenticationToken();
            token.OrganizationName = orgName;

            CrmSdk.CrmService crmService = new CrmSdk.CrmService();
            crmService.Url = "http://" + Server + "/mscrmservices/2007/crmservice.asmx";
            crmService.Credentials = new System.Net.NetworkCredential("", "", "");
            crmService.CrmAuthenticationTokenValue = token;
            crmService.PreAuthenticate = true;

            task task = new task();
            task.subject = "SpeedTest";
            Guid TaskID = crmService.Create(task);
            task = (task)crmService.Retrieve(EntityName.task.ToString(),
                                           TaskID, new AllColumns());

            for (int i = 0; i < 1000; i++)
            {
                task.subject = "SpeedTest " + i.ToString();
                crmService.Update(task);
                Console.WriteLine("Update Task " + task.subject);
            }
}

При запуске приложения, после инициализации веб-сервиса, появляется загрузка процессора на сервере приложением w3wp.exe - ~15% и приложением lsass.exe - ~45% (!). При запуске второй копии приложения одновременно с первой, загрузка процессора возрастает до 100% и работать в CRM становится невозможно. Сервер - виртуальная машина Windows Server 2008 SP2, на ней контроллер домена, SQL Server 2008 и все роли CRM сервера.
Возникли вопросы:
1) Что-то не так с кодом? (это тестовое приложение, но принцип работы с веб-сервисом такой везде)
2) Узкое место в аппаратной части? (два логических процессора 2,66 ГГц, 2 Гб памяти)
3) Или это нормальное поведение при такой нагрузке? То есть теоретически пользователи могут нагрузить сервер до такой степени стандартным функционалом CRM. Вопрос в количестве пользователей.
4) Вопрос с lsass.exe? Не понятно в чем причина загрузки сервера этим процессом.
5) Есть определенная задача, если нужно - объясню суть задачи. Попробуем подумать над другими способами решения. Сейчас думаем над тригерами и прямыми инсертами в базу SQL Но это крайний вариант.
По поводу приложения - всё выглядит правильным.
Поскольку аппаратка - виртуалка, то попробуйте добавить процессоров/ОЗУ.
По поводу прямых инсертов и триггеров - можете попробовать, но это нерекомендуемая кастомизация.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Производительность CRM системы slivka_83 Dynamics CRM: Администрирование 10 10.02.2011 12:29

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:13.