Добрый день!

Есть БП, который переносит данные из одного объекта в другой, попутно еще обращается к сторонним сервисам и т.д. При выполнении БП открывается карточка нового объекта и пользователь видит визуально что у него получилось при переносе.

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

БП просто валится в ошибку по тайм ауту. Пробовали установить признак выполнения процесса в фоновом режиме, но это только все сломало.

Может у кого есть опыт как можно увеличить тайм аут выполнения БП? Базовых методов не нашли.

Благодарю!

 

Нравится

3 комментария
Лучший ответ

Добрый день!

Скорее всего вы запускаете БП через стандартное действие "Запуск процесса". Если это так, то там вызывается метод _runProcess утилиты ProcessModuleUtilities, который наверняка вызывает метод _runProcessOld. В этом методе вызывается сервис ProcessEngineService.svc с передачей параметров. Но таймаут не передается.

Что можно сделать: реализовать отдельное действие запуска вашего БП (кнопку в каком-нибудь разделе, дизайнере), в котором будет вызываться сервис ProcessEngineService.svc с передачей таймаута.

Добрый день!

Скорее всего вы запускаете БП через стандартное действие "Запуск процесса". Если это так, то там вызывается метод _runProcess утилиты ProcessModuleUtilities, который наверняка вызывает метод _runProcessOld. В этом методе вызывается сервис ProcessEngineService.svc с передачей параметров. Но таймаут не передается.

Что можно сделать: реализовать отдельное действие запуска вашего БП (кнопку в каком-нибудь разделе, дизайнере), в котором будет вызываться сервис ProcessEngineService.svc с передачей таймаута.

Мне кажется, в Вашем случае лучше не увеличивать тайм-аут, а пересмотреть процесс, чтобы он обрабатывал порциями, между которыми при помощи таймера делал паузу.

Это не только уберёт зависание, но и ослабит нагрузку на сервер приложений и базу данных.

В таком случае в конце фоновой работы БП можно будет генерировать уведомление для правой панели, в котором и давать ссылку на запись.

Похожий подход используют для длительных стандартных действий в системе, вроде заливки из Excel.

Сидоров Александр В.,

Александр, ваша идея нам очень очень помогла! Спасибо! будем еще тестировать).

Показать все комментарии

Продолжение настройки таймаута для web-формы. В прошлый раз осуществлялась настройка IIS 7.0. На это раз опишу как настроить IIS версии 6.0.

  • Сначала заходим в свойства сайта, на котором настроена web-форма
  • Заходим на закладку ASP.NET и нажимаем кнопку "Edit Configuration"
  • В открывшемся окне переходим на закладку "Stae Management" и в поле "Session timeout (minutes)" устанавливаем нужное значение таймаута web-формы
  • Дальше нужно настроить пул приложений. Находим тот пул, который использует наш сайт и вызываем его свойства
  • На закладке "Perfomance" в поле "Shutdown worker processes after being idle for (time in minutes)" указываем нужный таймаут
  • И последнее, настройка таймаута сессии. Снова открываем настройки web-формы и на закладке "Home Directory" нажимаем кнопку "Configuration..."
  • На закладке "Options" устанавливаем нужное значение поля "Session timeout"

Нравится

Поделиться

0 комментариев
Показать все комментарии

Здравствуйте,дорогие читатели моего блога.

Сегодня я хочу рассмотреть некоторые особенности настройки Web-формы Terrasoft Service Desk .

В основном все сводится к правильной настройки IIS. В документации «Руководства администратора» довольно подробно описано как сделать настройку IIS для разных версий: 6.0 (Windows Server 2003) и 7.0(Windows Vista, Windows Server 2008). Существуют, конечно, еще такие версии как 5.1 (Windows XP) и 7.5 (Windows 7, Windows Server 2008 R2), но основные отличия начинаются при переходе с 6-той на 7-мую версию.

Итак, на повестке дня следующий вопрос: «Как увеличить таймаут работы Web-формы?» Часто от пользователей появлялись пожелания увеличить на Web-форму таймаут в N часов. В настройках IIS по умолчанию сессия Web-формы существует только 20 минут, потом, при любых действиях, пользователя "выбрасывает" на страницу с логином, где приходится заново логиниться. Т.е. работая в Web-форме пользователю неудобно постоянно вводить свой логин и пароль, стоит ему отвлечься на 20 минут.

Хочу отметить, что Microsoft советует уменьшать таймаут:

«Если для приложения разрешено состояние сеанса, пользователь получает уникальный идентификатор сеанса при первом запросе веб-страницы у приложения ASP. По умолчанию срок действия сеанса заканчивается, если пользователь не запрашивает или не обновляет страницу в приложении ASP в течение 20 минут. Так как объекты сеанса занимают память веб-сервера, можно рассмотреть возможность уменьшения значения тайм-аута для сбережения ресурсов.»

Но для меня главным является удобство пользователя. Поэтому таймаут я буду увеличивать. Кстати, там написано как изменять этот параметр, но написано довольно скудно. Я постараюсь более подробно и полно описать процесс настройки.

  • У меня уже есть готовая настроенная Web-форма на IIS 7.0. Вот как выглядит настроенный сайт в диспетчере сервера
  • А это окно логина в запущенной Web-форме
  • И, собственно, сама Web-форма в действии. Для примера, список инцидентов
  • Теперь покажу где установлен таймаут. Становлюсь на службу IIS в диспетчере служб, выбираю внизу «Просмотр возможностей» (по умолчанию эта вкладка уже активна)
  • Выбираю ASP в списке возможностей
  • Далее в действиях нажимаю на ссылку «Открытие функции» или двойное нажатие на ASP
  • В группе службы разворачиваю «Свойства сеанса»
  • Время сеанса установлено в 20 минут. Ставлю, например, 10 часов: 10:00:00. В правой части окна в разделе «Действия» нажимаю на ссылку «Применить» для сохранения изменений

  • Приметка: По информации с сайта Microsoft эту же операцию можно сделать в командной строке с помощью команды appcmd. Сначала у меня не получилось. Но потом, немного поискав, нашел нужную комбинацию параметров. Для моего случая это будет выглядеть так: %windir%\system32\inetsrv\appcmd set config /section:asp /session.timeout:10:00:00. Отмечу, что для 64-битной системы нужно вместо system32 писать syswow64.

  • После этого нужно настроить состояние сеанса. Становлюсь на мою Web-форму и выбираю «Состояние сеанса» в списке возможностей
  • Перехожу внутрь двойным щелчком мыши и нахожу ниже «Параметры файла cookie» -> «Тайм-аут (в минутах)»
  • Изменяю значение на 600, что значит 10 часов и в правой части окна в разделе «Действия» нажимаю на ссылку «Применить» для сохранения изменений
  • И последнее, нужно настроить таймаут простоя пула приложений. Для начала узнаю на какой пул приложений настроена моя Web-форма. Становлюсь на Web-форму
  • В разделе «Действия» нажимаю «Основные настройки...» – вижу, что для моей Web-формы установлен стандартный (устанавливаемый по умолчанию) пул приложений «DefaultAppPool». Закрываю это окно без изменений.
  • В диспечеру служб выбираю «Пулы приложения» и нахожу нужный мне пул
  • Выбираю «Дополнительные параметры» в разделе «Действия» и нахожу «Тайм-аут простоя (в минутах)»
  • Устанавливаю значение в 600, что соответсвует 10 часам, и нажимаю кнопку OK
  • Для того, чтобы все изменения вошли в силу – перезагрузагружаю IIS. Становлюсь на IIS в диспетчере служб и в разделе «Действия» выбираете «Перезагрузить». Хотя, как показывает практика, если при каждом изменении нажимать в действиях на «Применить» – то изменения уже вступили в действие и для всех пользователей, которые войдут на сайт Web-формы, будут действовать уже новые параметры.

Если есть какие-то вопросы – задавайте, с удовольствием отвечу.
Продолжение для IIS 6.0 читайте тут.

Нравится

Поделиться

4 комментария

У меня система BPMonline Realty 5.
Сделала описанные выше настройки на своем сервере.
Помимо вышеуказанного, сделала изменения в настройках в файле web.config
Тем не менее, по прохождению времени пользователя из системы не выкидывает.:confused:

Здравствуйте, Антонина!

Для приложения BPMonline 5 существуют три таймаута: авторизационный и сессионный (настраивается в web.config), а также, таймаут пула приложения.

Изменения необходимо внести в файл Web.config –

system.web/ authentication/forms - параметр timeout="359" авторизационный
system.web/sessionState - параметр timeout="360" сессионный

Время указано в минутах.

Прошу обратить внимание на то, что авторизационный параметр должен быть меньше чем сессионный, а сессионный должен быть такой же, как и параметр таймаута пула на стороне IIS.

Таймаут пула в IIS:

"Резвов Роман" написал:

Здравствуйте, Антонина!

Для приложения BPMonline 5 существуют три таймаута: авторизационный и сессионный (настраивается в web.config), а также, таймаут пула приложения.

Изменения необходимо внести в файл Web.config –

system.web/ authentication/forms - параметр timeout="359" авторизационный

system.web/sessionState - параметр timeout="360" сессионный

Время указано в минутах.

Прошу обратить внимание на то, что авторизационный параметр должен быть меньше чем сессионный, а сессионный должен быть такой же, как и параметр таймаута пула на стороне IIS.

Таймаут пула в IIS:

С уважением,

Роман Резвов

Специалист службы поддержки II линии

Группа компаний Terrasoft


Роман, так и делала. Для теста указала:
авторизационный - 3мин
сессионный - 5мин
В пуле - 5мин.
Инструкцию как делала, прикрепила.

Антонина, существует два Web.config: в корне бинарных файлов и в папке Terrasoft.WebApp. Необходимо вносить изменения именно в корневой Web.config.

Несмотря на "Хочу обратить Ваше внимание, что данный параметр будет применен для всех сайтов запущенных на IIS сервере." попробуйте, пожалуйста, установить таймаут одному конкретному пулу.

Показать все комментарии