Application Server

Материал из archestra.info
Перейти к: навигация, поиск

Содержание

Описание

Application Server - Единая среда для обеспечения нужд визуализации, исторических данных, устройств связи и интеграции приложений

  • Для разработки под Application Server нужна среда разработки ArchestrA IDE
  • Для возможности развертывания (deploy) необходимо установить компонент Bootstrap
  • Для разворачивания на сервере роли Application Server необходимо и достаточно установки компонента Bootstrap. Больше ничего из ПО Wonderware можно не устанавливать

Версии

Типы данных

  • Does AppServer support 32 bit unsigned integer?
    • No. The Integer data type in AppServer is a signed integer. trying to read a 32 bit word that has bit wise values may yield a negative number if the most significant bit is set to 1. The most significant bit is the sign bit.

Общие вопросы

Как определить версию по cab или aaPKG файлам

см. Dev Studio

UAC

Т.к. вы работаете в домене, учетную запись которую используют службы платформы(ArchestrA network account) рекомендуется использовать доменную.

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

 UAC необходимо отключить. см. Tech Note 772 Disabling UAC for Wonderware® Product Support on Windows 2008 Server R2 – 64 bit

Очистка Галактики

Очистка ГАЛАКТИКИ (GALAXY) TN930 Wonderware System Platform Clean-up Guide https://wdnresource.wonderware.com/support/kbcd/html/1/t002746.htm

Восстановление приложения

InTouch До 9.5 Tech Note 112 от 9.5 и выше Tech Note 774 Managed Application до 10.0 SP2 Tech Note 546 от 10.0 SP2 TEch note 570

Падение платформ

Вопрос «ПАДЕНИЕ ПЛАТФОРМ ПОСЛЕ ПЕРЕЗАГРУЗКИ»

Посмотрите техноты: 508, 478, 461
Убедитесь что нет расхождений между доменными и локальными политиками безопасности. 


  1. . Раздеплоить все платформы галактики
  2. . Выполнить полный бэкап №1 галактики
  3. . Выполнить TN930 (см. приложение к письму) включая выполнение утилиты Galaxy DB Scrubber (см приложение к письму, пароль на архив 123)
  4. . Выполнить полный бэкап №2 галактики
  5. . Удалить галактику
  6. . Восстановить галактику из бэкапа №2

Важные каталоги

C:\Program Files (x86)\ArchestrA\Framework\Bin\BackupGalaxies

C:\Users\Administrator\AppData\Local\Wonderware\win.ini - пустой файлик для (Windows 2008 sp2 & SP2012)

wonderware.opt

Установка лицензий, менеджер лицензий, файл wonderware.opt (C:\Program Files\Common Files\ArchestrA\License\wonderware.opt)

- Time Synchronization (Windows) 882


InTouch Ограничения Bind List Tech Note 397


Alarm DB logger TN 890 Alarm DB Logger Status Functions (Windows 7 and Server 2008 R2) TN 821 Troubleshooting Wonderware Alarm Provider Query Issues TN 872 Running AlarmDBLogger as Windows Service on Windows2008 and Windows 7

ALARMS TN 804 Consuming and Acknowledging Alarms Using Application Server QuickScript


ПОРТЫ Wonderware FactorySuite A2 Deployment Guide.pdf p. 203 "Process Control Network Firewall Ports"

Анализ работы AppEngine

Если есть подозрение на утечку памяти, можно помониторить софт WW как описано в техноте 868 - Troubleshooting Wonderware Software Resource Issues with Performance Monitor(wdn.wonderware.com)

Анализ атрибутов AppEngine

Check the performance of the Appliction Engine by calculating the ratio between the Scheduler.TimeIdleAvg and Scheduler.ScanPeriod. The result should be at least 60% to 70% of the engine scan period. Additionally, monitor for increases in Scheduler.ScanOverrunsCnt.

The main things to be concerned with are:

  • CPU avg for the computer should not exceed 30 to 40 % in a system with load balancing or 50 to 60 % without load balancing.
  • Scheduler.ExecutionTimeAvg a Should not exceed 30 to 40 % of the Engines Scan period
  • Scheduler.ScanCyclesCnt
  • Scheduler.ScanOverrunsCnt a Excluding deployment overruns, this should never exceed .05% of Scheduler.ScanCyclesCnt
  • Scheduler.ScanOverrunsConsecCnt a Excluding deployment overruns this should never exceed 0

Источник: Tech Note 671 - Optimizing IO Performance in System Platform https://cloud.klinkmann.com/index.php/s/HAHTYr9qedMnzUB

Scheduler.ScanOverrunsCnt

[engine].Scheduler.ScanOverrunsCnt – счетчик переполнений времени скана. Если он растет ==> значит движок не справляется с обработкой всех своих задач

Engine.Scheduler.ScanOverrunsCnt Стабильно увеличивающееся значение этого счётчика свидетельствует о том, что Engine не справляется с обработкой всех объектов за свой скан - либо разгружайте Engine, либо увеличивайте время скана.


Scheduler.ScanPeriod

[engine].Scheduler.ScanPeriod – настроенное время скана


Scheduler.TimeIdleAvg

[engine].Scheduler.TimeIdleAvg – среднее незанятое обработкой время скана. Т.е. сколько свободного времени осталось после выполнения в скане всех задач. Должно быть более 60% от ScanPeriod

Scheduler.ExecutionTimeAvg

[engine].Scheduler.ExecutionTimeAvg – среднее время выполнения скана. Должно быть менее 30 - 40 % ScanPeriod

Scheduler.ScanCyclesCnt

[engine].Scheduler.ScanCyclesCnt – счетчик выполненных сканов

Scheduler.ScanOverrunsCnt

[engine].Scheduler.ScanOverrunsCnt – счетчик невыполненных сканов из-за превышения времени скана. Он должен быть с районе 0,5 % от ScanCyclesCnt

ScanOverrunsConsecCnt

[engine].Scheduler.ScanOverrunsConsecCnt – не должно быть больше 0


CPULoadAvg

[platform].CPULoadAvg – средняя загрузка ЦПУ. Должна быть не более 30-40%

Engine.Historian.Connection

[engine].Engine.Historian.Connection, string, имя/адрес сервера Historian основного. Дополнительно см. Engine.Historian.ConnectStateMask

Engine.Historian.ConnectionPartner

[engine].Engine.Historian.ConnectionPartner , string, имя/адрес сервера Historian резервного (если резервирование настроено)

Engine.Historian.ConnectState

[engine].Engine.Historian.ConnectState, boolean, состояние соединения с сервером Historian (основным или с резервным). [engine].Engine.Historian.ConnectState ==1 означает, что данные отправляются на сервер Historian

Engine.Historian.InStoreForward

[engine].Engine.Historian.InStoreForward, boolean, состояние перехода AppEngine в режим Store&Forward. Дополнительно см. Engine.Historian.InStoreForwardMask [engine].Engine.Historian.InStoreForward ==1 означает, что AppEngine переключился в режим Store&Forward и сейчас копит данные у себя, не отправляя их на сервер Historian.

Engine.Historian.ConnectStateMask

[engine].Engine.Historian.ConnectStateMask, int, показывает более подробно наличие соединения с сервером Historian, с каким именно. Может принимать значения 0, 1, 2, 3 (в двоичной системе: 00, 01, 10, 11)

00 - нет соединения ни с одним из серверов
01 - есть соединение только с основным сервером, с резервным связи нет
10 - есть соединение только с резервным сервером, с основным связи нет
11 - есть соединение с обоими серверами и основным и резервным
Engine.Historian.InStoreForwardMask

[engine].Engine.Historian.InStoreForwardMask, int, показывает более подробно переключение AppEngine в режим Store&Forward, для какого именно сервера AppEngine переключился. Может принимать значения 0, 1, 2, 3 (в двоичной системе: 00, 01, 10, 11)

00 - режим S&F выключен
01 - режим S&F включен только для основного сервера
10 - режим S&F включен только для резервного сервера
11 - режим S&F включен для обоих серверов и для основного и для резервного

Работа с алармами

Атрибуты для area

  • AlarmOnCntTotal, AlarmUnAckedCntTotal и AlarmDSCntTotal содержат сводную суммарную информацию по алармам для всех входящих в area объектов , в том числе и для всех sub area

Изменение частоты сбора данных с System Platform

Задача собрать данные с частотой 100 мс?

Продолжительный деплой

ситуация: деплой длится часов от шести до суток/двух.


Похоже на плохую пропускную способность канала (не сети). Нужно от 128 КБит/с (минимальные требования от WW). Но проблемы исчезают от 512 КБит/с. Если деплой ведётся через общую сеть (файлообмен, интернет, печать, ...), то именно такая ситуация и наблюдается.

Настройка резервирования

Общие шаги конфигурирования

  1. сконфигурировать 2 сетевых соединения в Windows: (1) сеть Archestra (2) RedundancyMassageChannel
  2. сконфигурировать $WinPlatform и $AppEngine объекты для резервирования
  3. создать модель деплоя для резервируемых обработчиков(Engines)
  4. сконфигурировать $RedundantDIObject
  5. создать модель деплоя для резервируемого DIобъекта
  • Настройка времени переключения: на вкладке General обработчика(Engine)
    • Параметр Engine.EngineFailureTimeout - в течении которого engine может работать без предупреждения bootstrap о его состоянии, можно выставить в диапазоне 2000ms(2sec) - 10000ms(10sec), 10000ms значение по умолчанию; время фактического ввода в работу резерва в 3 раза больше времени EngineFailureTimeout, соответственно для EngineFailureTimeout=2000ms(2sec) будет равно 6sec, для 10000ms(10sec) равно 30sec
    • При установки EngineFailureTimeout, следует учесть что оно должно быть больше времени scanperiod обработчика и необходимо учесть чтобы время было достаточно для обеспечения времени необходимого для действий связанных с компиляции, что могут предотвращать или отстрачивать уведомления bootstrap( прим. Каскадный деплой объектов с большим количеством скриптов).

Очистка Галактики Galaxy DB Scrubber

утилита Galaxy DB Scrubber. Она ищет ошибки и мусор в БД Галактики и устраняет их. Использовать крайне рекомендуется на раздеплоеном GR-узле, чтобы к БД не было обращения.

К тому же в хелпе сказано: For a large Galaxy this is potentially a time consuming operation, and should be used only when necessary.

Задачи утилиты:

  • Shrink DB
  • Удаление неиспользуемых пакетов
    • Фактически выполнение процедуры: [dbo].[internal_delete_unused_packages]
  • Обновление индексов


Перед выполнением:

  • обязательно сделать перед выполнением бэкапы и в виде .cab и в виде .aaPKG
  • Обязательно раздеплоить все объекты

Вопросы по заказу

Пример 1. Покупаем System Platform. В лицензионном пакете Application Server w/4 Application Server Platforms, Device Integration Server, Information Server, Historian Server. Какой перечень лицензионных файлов и USB-ключов мы получим?


По примеру 1:

  • каждый из 4-х компонентов SP (AppServer, Device Integration, Historian, Inf Server) можно заказать на отдельный ключ (USB/LPT). Набор лиц файлов:
    • для App Server - wwsuite.lic
    • для Device Integration - wwsuite.lic
    • для Historian - wwsuite.lic (обещают добавить archestraserver.lic)
    • для Inf Server - wwsuite.lic + archestraserver.lic
  • А можно все лицензии на один носитель? Или, например, две лицензии - на одну флэху, а две - на другой?
    • Как Вам удобно. Но не более 4 аппаратных ключей.

Настройка безопасности

Настройка защиты объектов IDE_ru стр 71

Как запустить приложение из скрипта Application Server

Пример:

System.Diagnostics.Process.Start("C:\Windows\System32\notepad.exe" );


Platform Manager показывает узлы, но они не существуют - удалены

  • Удалить из реестра несуществующие узла:
HKEY_LOCAL_MACHINE\SOFTWARE\ArchestrA\Framework\Platform\PlatformNodes.

Ошибки в LogViewer

Предупреждение Tag xxx.yyy failed to add historian after 3 attempts

Возможная причина: Historian не поддерживает специальные символы в свойствах единиц измерения EngUnits. Например, в случае указания "m³"

Решение: Заменить символы, код символа должен быть меньше 128, см. TN964 Solving "Tag xxx.yyy failed to add historian after 3 attempts" https://softwaresupportsp.invensys.com/Pages/OKMArticle.aspx?docId=TN964&actp=search

  • Перед работой сервер Historian необходимо остановить, изменения на уровне Application Server тоже необходимы. При этом потребуется:
    • раздеплоить все объекты
    • внести изменения в объекты
    • внести изменения в БД Runtime (см. TN 964)
    • и только потом задеплоить объекты

Предупреждение The user ID is {00000000-0000-0000-0000-000000000000}, which is not acceptable for security verification

Причина/Решение: This issue is commonly caused by MX clients attempting writes without logging in (or other inactivity type settings) This is a common message which ussualy is not a problem. This is related to security and means that a user is trying to run a script but they're account does not have proper permission to do so. In this case, the GUID of all zeros ussualy means that noone is currently logged in, so the 'None' user is being used. As such this account likely doesn't have permission to interact with the objects. This is normally not a problem, unless scripts are not executing. In this case you would need to figure out which object is triggering this message and whether someone should be logged in at the time (for example through Alarm/Events DB).

Ошибка Error CheckpointFileServer INVALID HRESULT LINE XXX FILE CheckPointFile.cpp aaEngine

Описание/Причина: Во время работы объектов AppEngine по пути: С:\Program Files (x86)\ArchestrA\Framework\Bin\CheckPointer\ создаются и постоянно обновляются файлы контрольных точек.

Механизм контрольных точек позволяет сохранять значения атрибутов времени выполнения. Если по каким-либо причинам эти файлы повреждаются - возникает рассматриваемая ошибка. Повреждение может произойти в случае, если узел с AppEngine объектами был выключен некорректно (например в случае отключения питания сервера).

Другая причина может быть связана с настройкой антивирусного ПО. Необходимо убедится, что ключевые файлы и каталоги ПО Wonderware им не сканируются, т.е. они включены в указанные в документации исключения.

Решение: удалить поврежденные файлы контрольных точек, расположенные в С:\Program Files (x86)\ArchestrA\Framework\Bin\CheckPointer\ выполнив процедуру Undeploy для платформы, на которой размещен проблемный объект AppEngine.

Регулярное info сообщение "Unable to reach Sentinel Manager https://sentinel/api/psms/"

Описание: Ошибка(и) в конфигурации файла adpHostSrv.exe.config по пути C:\Program Files (x86)\Sentinel System Monitor\Sentinel Agent

Возможные причины и решения:

  • The file encoding uses ANSI while the good file uses UTF-8. You need to fix the encoding in "utf-8"
  • Check if "AgentCode" value is empty in <appSettings> section. If yes, find the "AgentCode" value from the following registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Wonderware\Archestra\Plugins\Sentinel System Monitor\Sentinel Manager. See value for the key „MachineIdentifier“ and add that in the "AgentCode" setting.

  • Setting "ConsoleServiceURL" must have hostname of Sentinel Manager.

After any changes do restart Sentinel Agent Service.

Определение объекта и атрибута по сообщениям в логе вида "BRO CPrimitiveProxy::GetPropertyValue - Index is 2 on a non-array attribute. ObjectId: 252 PrimitiveId: 2 AttributeId: 350"

Для того, чтобы определить проблемный объект и его атрибут можно воспользоваться следующим способом:

  1. . В SQL Management Studio в БД Galaxy находим таблицу dbo.instance.
  2. . Делаем запрос по столбцу mx_object_id. На этот параметр ссылается сообщение в логе (на скриншоте выше ObjectID: 252).
  3. . По mx_object_id определяем параметр gobject_id.
  4. . Ищем таблицу dbo.gobject.
  5. . Делаем выборку по параметру gobject_id.
  6. . Определяем имя объекта из столбца tag_name.
  7. . После того, как стало известно имя объекта, запускаем IDE -> ObjectViewer.
  8. . В ObjectViewer’e щелкаем правой кнопкой мыши на нужном объекте, выбираем Dump.
  9. . Информация по объекту будет представлена в LogViewer’e.
  10. . Находим искомый атрибут по AttributeId.