17.01.2013, 14:58 | #1 |
Заноза в заднице
|
Выделение памяти под процессы на сервере MS CRM
Печальная история
Некоторое время назад заметил, что с определенной периодичностью начал "отваливаться" один из workflow-процессов с описанием ошибки "Недопустимый тип получателя". Ошибка возникает на шаге, который вызывает создание новой кастомной сущности, на которой работает очень хитрый и развесистый PreCreate-плагин. Стал думать и гадать, разбираться так и сяк - в ручном режиме ошибка не отлавливается: всё работает с первого раза. Но суть не в самой ошибке, а в попытках обнаружения её источника. В процессе наблюдения и разбора обнаружилось, что на сервере CRM (single server) происходит нехилое выделение памяти под процессы: - Microsoft CRM Asynchronous Processing Service (один из двух), и - Microsoft.Crm.Sandbox.HostService Отмечу, что в общих масштабах сервера в принципе, выделяемая память не занимает какое-то критичное пространство - около 20% всего, да и Microsoft.Crm.Sandbox.HostService периодически "ужимается" до исходного состояния. Но вот Asynchronous Processing Service реально беспокоит - за три цикла выполнения указанного workflow (трижды подряд он срабатывает), выделямая память возросла с 300 460 К до 544 924 К. Подозреваю, что код плагина должен содержать какие-нить Dispose или что-то вроде. Но что делать конкретно, непонятно, поэтому, если кто знает ответы на вопросы (смотрим ниже) или даже знает источник, из которого можно прочесть что-то,- буду благодарен за помощь. Вопросы: 1. Что влияет на выделение памяти под указанные процессы? 2. Как правильно организовать программные ресурсы плагина для того, чтобы избежать утечек? 3. Хотелось бы понимать: за что отвечает процесс Microsoft.Crm.Sandbox.HostService и какие выводы можно сделать, если под данный процесс выделяется память?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! Последний раз редактировалось Likefire; 17.01.2013 в 15:11. |
|
|
|