RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)

Аварийное завершение Навигатора.

Рассмотрим один из случаев.
Под аварийным завершением будем описывать ситуацию, когда приложение само собой закрывается, либо после закрытия появляется сообщение "Приложение выполнило недопустимую операцию и будет закрыто".
Как правило, единственным способом исследования таких инцидентов является анализ дампа памяти разработчиком. Однако, одной из причин может быть нехватка какого-либо компонента. В этом случае можно обойтись без анализа дампа.
Что для этого нужно.

1. Навигатор, который аварийно завершает работу при определенном действии
2. Process Monitor (http://technet.microsoft.com/ru-ru/sysinternals/bb896645).

Последовательность шагов такова.
1. Запускается Навигатор
2. Запускается Process Monitor
3. Выполняется действие, которое приводит к сбою.

В логе ProcessMonitor за время падения нужно поискать обращения к реестру, которые закончились неудачей: NOT FOUND. В ключе реестра (колонка Path) будет запись типа CLSID {идентификатор}. Нужно на машине, на которой не наблюдается сбой поискать в реестре данный ключ. В ключе будет название компонента. Далее этот компонент надо найти на проблемной машине и попробовать зарегистрировать через regsvr32.

Пример инцидента.

Навигатор аварийно завершал работу при открытии любой карточки. Через Process Monitor было выявлено, что на машине отсутствует регистрация компонента oleaut32.dll. При этом данная библиотека находилась на машине в папке Windows\system32. Регистрация устранила сбой.

В каких случаях такое может быть, ведь oleaut32.dll системный компонент?

Причина в стороннем ПО. Стороннее приложение могло при установке добавить в свою папку свою копию библиотеки oleaut32.dll и зарегистрировать её. При деинсталляции этого приложения, библиотека удаляется вместе с регистрацией.


Читать дальше

Оставить комментарий (всего: 0)

Использование Process Explorer для определения расположения библиотек

Клиентская часть DocsVision устанавливается в разные папки, в зависимости от области инсталляции: для всех пользователей или для текущего. При замене библиотек (например, при установке исправлений, которые не идут в составе *.msp) необходимо определить
1. В какой папке находится нужная библиотека
2. Нет ли приложений, которые сейчас её используют. Иначе будет ошибка совместного доступа к файлу при попытке его заменить.

И в общем, некоторые модули могут хранить сборки как рядом с исполняемым файлом, так и в кеше сборок %windir%\assembly

Решить задачу поиска используемой библиотеки можно при помощи ProcessExplorer (http://technet.microsoft.com/ru-ru/sysinternals/bb896653)

Задача 1. Ищем приложения, которые используют определенную библиотеку.

1. Запускается Process Explorer

2. В верхнем меню нужно выбрать Find Handle or DLL. Ввести библиотеку и нажать Search.
В окне будет список процессов, которые на данный момент используют библиотеку.

Задача 2. Определить где находится используемая библиотека
1. В Process Explorer нужно выбрать View /Show Lower Pane и View / Lower Pane View / DLLs
2. В списке процессов выбрать нужный, например iexplore.exe
3. При выборе процесса в нижней панели будет отображен список библиотек. В свойствах нужной библиотеки можно посмотреть её путь.

Читать дальше

Оставить комментарий (всего: 0)

Мониторинг сервиса Workflow

Прошел почти месяц без новых статей, что не очень хорошо. Но вот все предновогодние и послепраздничные задачи решены. Продолжим.

Рассмотрим задачу мониторинга работы сервиса Workflow. Т.е. каким образом можно определить остановку сервиса, или его медленную работу. Сервис бизнес-процессов постоянно сохраняет новые записи в журналах бизнес-процессов, если в экземплярах включено журналирование. А все строки содержаться в одной таблице [dbo].[dvtable_{388F390F-139E-498E-A461-A24FBA160487}].
Значит если
  • новых записей в таблице в таблице не появляется,
  • записи в таблице появляются гораздо медленнее чем нужно,
то это может свидетельствовать о зависании или о медленной работе сервиса Workflow. И как минимум нужно уведомить администратора.

Каким может быть решение.
  • Job на MS SQL, который периодически запускает процедуру проверки
  • Процедура, которая проверяет, появляются ли новые записи в таблице, и если появляются, то какой временной интервал между ними.
  • При возникновении проблем процедура отправляет уведомление по электронной почте администратору, средствами sp_send_dbmail.
 Текст процедуры выложен на ftp ftp://ftp.docsvision.com/blog/dvsp_support_check_workflow.sql
 Процедура определяет, завис ли сервис Workflow, в случае если завис, то отправляет письмо, и может (если задан соответствующий параметр) перезапустить сервис Workflow.

Как настроить.

1. Необходимо включить возможность отправки почтового сообщения сервером MS SQL. Как это сделать, можно посмотреть, например, здесь http://www.kodyaz.com/articles/sql2005-database-mail.aspx.

2. Создать job на базе данных, который бы с некоторой периодичностью  будет вызывать процедуру. Формат вызова.
exec dvsp_support_check_workflow 'адреса e-mail через точку с запятой', 'имя сервера, где работает сервис workflow', 'имя профиля', максимальная задержка между двумя записями лога, перезапускать или нет сервисы

Пример:
Отправка уведомления на два почтовых адреса admin1@example.com и admin2@example.com, при зависании, либо при разнице между двумя записями лога более 30 секунд. Сервис Workflow не перезапускать.
execute dvsp_support_check_workflow 'admin1@example.com; admin2@example.com','server1','mail_profile',30,0

Примечание 1: Процедура корректно работает только в случае если не настроен кластер Workflow. Если остановится один из узлов кластера, то зафиксировать это можно будет только косвенно - записи в журналах будут появляться реже

Примечание 2: Хотя бы в одном экземпляре процесса должен вестись журнал.

Примечание 3: Указывать имя сервера Workflow нужно только только для того, чтобы была возможность перезапустить его.
Читать дальше

Оставить комментарий (всего: 0)