29.12.2010, 15:37 | #1 |
Участник
|
Производительность
Добрый день всем!
Столкнулись с проблемой производительности при массовом обновлении полей у объектов через веб-сервис 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 Но это крайний вариант. |
|