Настройка и конфигурация сервисов
ArcGIS for Desktop упрощает публикацию сервисов, поскольку многие свойства сервиса задаются по умолчанию. Однако, если к вашим сервисам будут обращаться сотни и тысячи пользователей, вам придется изменить свойства сервисов по умолчанию в соответствии с требованиями вашего развертывания. В этом разделе представлен обзор некоторых параметров и методик, которые вы можете использовать при конфигурации ваших сервисов.
Слияние сервисов
Все сервисы, опубликованные с помощью ArcGIS 10.1 for Server и последующих версий, объединяются в пул. Это означает, что экземпляры сервиса могут совместно использоваться различными сеансами приложений.
Приложение, использующее экземпляр сервиса из пула, применяет его только в течение времени, необходимого для выполнения одного запроса (например, для отображения карты или геокодиования адреса). После завершения запроса приложение освобождает свою ссылку на сервис и возвращает ее в пул доступных экземпляров.
Очистка
Очистка сервисов позволяет уничтожить более ненужные сервисы и заменить их на новые. Этот процесс также освобождает ресурсы, занятые устаревшими сервисами.
Сервисы обычно разделены между несколькими приложениями и их пользователями. При повторном использовании несколько ситуаций могут привести к тому, что сервис станет недоступным для приложений. Например, приложение может некорректно изменить состояние сервиса или же приложение может удержать ссылку на сервис, что сделает его недоступным для других приложений и сеансов. В некоторых случаях сервисы могут быть повреждены и стать непригодными. Очистка позволяет обновлять пул сервисов и удалять устаревшие или непригодные сервисы.
Во время этого процесса сервер удаляет, а затем воссоздает каждый экземпляр в конфигурации сервиса. Очистка выполняется как фоновый процесс на сервере. Хотя вы и не увидите ничего, что сообщит о выполнении очистки, вы сможете увидеть события, связанные с очисткой, в файлах журнала.
При очистке уничтожаются и воссоздаются все запущенные экземпляры сервиса независимо от того, превышает ли число экземпляров минимальное значение. Для периодического сокращения числа запущенных экземпляров до заданного минимума сервис нужно остановить и перезапустить. Хороший способ автоматизировать этот процесс – создать скрипт Python, shell-скрипт или пакетный скрипт Windows, запускающий исполняемый файл командной строки с административным API-интерфейсом ArcGIS Server. Пользовательский исполняемый файл принимает имя сервера, имя сервиса, тип сервиса и то, следует ли сервис запустить или остановить, в качестве аргументов командной строки.
Время между событиями очистки называется интервалом очистки. Интервал очистки по умолчанию равен 24 часам, но его можно изменить в диалоговом окне Редактор сервисов (Service Editor). Вы можете выбрать время первоначальной очистки конфигурации. С этого времени очистка будет происходить по истечении интервала очистки.
Сервисы обрабатываются по одному экземпляру за раз, чтобы обеспечить доступность экземпляров и распределить спады производительности за счет создания нового экземпляра каждого сервиса. Очистка происходит в случайном порядке. Однако экземпляры сервисов, используемые клиентами, не обрабатываются до их освобождения. Таким образом очистка не влияет на работу пользователей.
Если во время очистки нет сервисов доступных для очистки, запрос ставится в очередь, пока экземпляр не станет доступным. Если в течение этого периода превышено максимальное время ожидания, в журнал будет записано обычное сообщение.
Изоляция
При создании сервиса вы задаете минимальное и максимальное значение экземпляров, которые должны быть доступны. Эти экземпляры выполняются на компьютерах-контейнерах в процессах. Уровень изоляции определяет, выполняются ли эти экземпляры в отдельных или общих процессах.
При высокой изоляции каждый экземпляр выполняется в своем собственном процессе. Если что-то вызывает сбой процесса, это повлияет только на один экземпляр, выполняющийся в нем.
При низком уровне изоляции несколько экземпляров конфигурации сервиса могут совместно использовать один процесс, благодаря чему один процесс способен обрабатывать несколько параллельных, независимых запросов. Это часто называется многопоточностью.
При низком уровне изоляции 8 экземпляров по умолчанию и максимум 24 экземпляров одной конфигурации сервиса могут совместно использовать процесс. Вы можете задать значение опции Экземпляров на процесс (Instances per process) на закладке Процессы (Processes) в диалоговом окне Редактор сервисов (Service Editor). При создании такого числа экземпляров определенного сервиса сервер запускает дополнительный процесс для следующей группы экземпляров и т. д. Экземпляры создаются и уничтожаются, они занимают и освобождают место в этих процессах.
Преимущество низкого уровня изоляции состоит в том, что он увеличивает число параллельных экземпляров, поддерживаемых одним процессом. Низкая изоляция позволяет несколько уменьшить использование памяти сервера. Однако это улучшение создает и определенный риск. Если процесс завершается или зависает, все экземпляры, использующие его, уничтожаются. Настоятельно рекомендуется использовать высокую изоляцию.
Проверка неактивных подключений к данным
Если экземпляр сервиса не активен, администратор сервера с трудом может определить, успешно ли поддерживаются подключения к исходным данным. В ArcGIS Server есть встроенные механизмы проверки неактивных подключений к базам геоданных ArcSDE. Эти проверки позволяют избежать ситуации, когда сервис перестает отвечать на запросы после отключения или прерывания соединения с ArcSDE.
Вы можете включить проверки подключения к данным, открыв закладку Процессы (Processes) диалогового окна Редактор сервисов (Service Editor) в ArcGIS for Desktop или Manager и отметив опцию Периодически проверять и восстанавливать подключения к данным для простаивающих экземпляров (Periodically check and repair data connections for idle instances). Вам также нужно указать интервал в минутах, после которого подключения сервиса автоматически проверяются (и восстанавливаются при необходимости). Значение по умолчанию 30 минут обычно подходит.
Включение этих проверок полезно также в случаях, когда брандмауэры закрывают порты к ArcSDE, если сервисы простаивают в течение определенного периода времени. В этой ситуации на ваш выбор интервала могут повлиять настройки времени ожидания брандмауэра.
Время ожидания
Понимание различных доступных значений времени ожидания может помочь добиться стабильности и доступности работы сервисов. Эти значения доступны на закладке Слияние сервисов (Pooling) в диалоговом окне Редактора сервисов (Service Editor).
После того, как клиент получает ссылку на сервис, он использует сервис в течение определенного времени перед тем, как освободить его. Период времени между тем, когда клиент получает ссылку на сервис, и тем, когда он освобождает его, является временем использования. Чтобы убедиться в том, что клиенты не удерживают ссылки на сервисы слишком долго (т.е. они корректно освобождают сервисы), у каждого сервиса есть максимальное время использования сервиса клиентом. Если клиент удерживает сервис дольше, чем заданное максимальное время использования, сервис автоматически освобождается, а клиент теряет ссылку на сервис.
При создании нового сервиса значение максимального времени использования по умолчанию равно 600 секундам (10 минутам). Однако в предварительно созданном сервисе PublishingTools, который поставляется с каждым сайтом ArcGIS Server, максимальное время использования задано как 3600 секунд (60 минут). Это сделано для публикации задач, которые копируют большой объем данных на сервер.
Максимальное время использования также защищает сервисы от использования для выполнения большего объема работ, чем указано администратором. Например, у сервиса, используемого приложением для выполнения откреплений из базы геоданных, максимальное время использования может быть равно 10 минутам. Напротив, у сервиса, используемого приложениями, которые только отображают карты, максимальное время использования может быть равно 1 минуте.
Когда используется максимальное количество экземпляров сервиса, клиент, запрашивающий сервис, ставится в очередь, пока другой клиент не освободит один из сервисов. Период времени между тем, когда клиент запрашивает сервис, и получением сервиса является временем ожидания. У каждого сервиса есть максимальное время ожидания доступа к сервису. Если время ожидания клиента превышает максимальное время ожидания сервиса, запрос снимается.
Третье время ожидания указывает максимальное время работы экземпляра при простое. Когда сервисы больше не используются, они продолжают выполняться на сервере, пока другому клиенту не понадобится экземпляр. Запущенный, но неиспользуемый экземпляр все равно потребляет память сервера. Вы можете минимизировать число запущенных сервисов и, тем самым, сэкономить память, укоротив время простоя, равное по умолчанию 1800 секундам (30 минутам). Недостаток короткого времени простоя состоит в том, что когда истекает время ожидания всех сервисов, клиенты должны подождать создания новых экземпляров.
При создании экземпляров сервисов на ГИС-сервере, как в результате запуска сервера, так и при ответе на запрос сервера клиентом, время, необходимое на инициализацию экземпляра сервиса, называют временем создания. Время ожидания запуска, установленное в ГИС-сервере, определяет период времени после попытки запуска, по истечении которого ГИС-сервер считает запуск несостоявшимся и отменяет создание экземпляра сервиса. Значение по умолчанию – 300 секунд (5 минут).
ГИС-сервер хранит статистику о времени ожидания, времени использования и других событиях, которые происходят на сервере, в памяти и в журналах. Администратор сервера может использовать эту статистику, чтобы определить, например, не слишком ли велико время ожидания для сервиса, что может указывать на необходимость увеличения максимального числа экземпляров для этого сервиса.
Ограничение действий, которые пользователи могут совершать с сервисом
Чтобы облегчить управление веб-сервисами, у каждого типа сервиса есть набор разрешенных операций. Каждая из них содержит набор методов, которые можно включить или отключить как группу. Клиенты веб-сервиса могут вызывать только методы разрешенных операций.
Предположим, что вам нужно разрешить клиентам картографического веб-сервиса рисовать карту, но не запрашивать источники данных слоев карты. Для этого необходимо отключить операцию Данные (Data) и убедиться, что операция Карта (Map) разрешена.
Сервисы объектов представляют особый интерес в этой дискуссии, так как они используются для веб-редактирования данных ГИС. У сервисов объектов есть дополнительный набор операций, которые можно использовать для ограничения функций редактирования: Запрос (Query), Создать (Create), Обновить (Update) и Удалить (Delete). Их можно включить или отключить на закладке Доступ к объектам (Feature Access) в диалоговом окне Редактор сервиса (Service Editor) в ArcGIS for Desktop. Вы также можете запретить пользователям редактирование объектов, которые были созданы не ими, применив управление доступом на основе владения.
В следующих таблицах показаны методы, которые включены при разрешении операций для различных типов сервисов:
Операции картографического сервиса
По умолчанию разрешены следующие операции картографических сервисов: Карта (Map), Запрос (Query) и Данные (Data).
Карта |
Запрос |
Данные |
---|---|---|
GetDocumentInfo |
Identify |
Find |
GetLegendInfo | QueryFeatureCount | QueryData |
GetMapCount | QueryFeatureCount2 | QueryFeatureData |
GetMapName | QueryFeatureIDs | QueryFeatureData2 |
GetDefaultMapName | QueryFeatureIDs2 | QueryAttachmentInfos |
GetServerInfo | QueryHyperlinks | QueryAttachmentInfos2 |
GetSupportedImageReturnType | QueryHTMLPopups | QueryAttachmentData |
ExportMapImage | QueryHTMLPopups2 | QueryAttachmentData2 |
IsFixedScaleMap | GetSQLSyntaxInfo | QueryRelatedRecords |
ToMapPoints | QueryRelatedRecords2 | |
FromMapPoints | QueryRasterValue | |
HasSingleFusedMapCache | QueryRasterValue2 | |
GetTileCacheInfo | ||
GetMapTile | ||
HasLayerCache | ||
GetLayerTile | ||
GetVirtualCacheDirectory | ||
GetCacheName | ||
ComputeScale | ||
ComputeDistance | ||
ExportScaleBar | ||
GetCacheDescriptionInfo | ||
GetCacheControlInfo | ||
GetCacheStorageInfo | ||
GetDefaultLayerDrawingDescriptions | ||
GetMapTableSubtypeInfos | ||
GetMapTableSubtypeInfos2 | ||
GetServiceConfigurationInfo |
Операции сервиса геокодирования
По умолчанию разрешены следующие операции сервисов геокодирования: Геокодирование (Geocode) и Обратное геокодирование (Reverse Geocode).
Геокодирование |
Обратное геокодирование |
---|---|
GeocodeAddress |
Обратное геокодирование |
GeocodeAddresses |
|
StandardizeAddress |
|
FindAddressCandidates |
|
GetAddressFields |
|
GetCandidateFields |
|
GetIntersectionCandidateFields |
|
GetStandardizedFields |
|
GetStandardizedIntersectionFields |
|
GetResultFields |
|
GetDefaultInputFieldMapping |
|
GetLocatorProperties |
Операции сервиса геоданных
По умолчанию для сервисов геоданных разрешены операции Запрос (Query), Извлечение (Extraction) и Репликация (Replication). Это позволяет использовать все поддерживаемые методы запроса, извлечения, синхронизации и изменения данных, подтверждения сообщений и задания схем.
Запрос |
Извлечение |
Репликация |
---|---|---|
Get_Versions |
ExpandReplicaDatasets |
CreateReplica |
Get_DefaultWorkingVersion |
ExtractData |
ExportAcknowledgement |
Get_DataElements |
ExportReplicaDataChanges |
|
Get_MaxRecordCount |
ImportAcknowledgement |
|
TableSearch |
ImportReplicaDataChanges |
|
GetNextResultPortion |
ReExportReplicaDataChanges |
|
Get_Replicas |
UnregisterReplica |
|
Get_WrappedWorkspaceType |
ImportData |
Операции глобусного сервиса
По умолчанию разрешены следующие операции сервисов глобуса: Глобус (Globe), Анимация (Animation) и Запрос (Query). В отличие от картографических сервисов, операция Запрос (Query) охватывает операции Идентификация (Identify) и Найти (Find).
Глобус |
Анимация |
Запрос |
---|---|---|
Get_Version |
Get_Animation |
Identify |
Get_LayerCount |
Find |
|
Get_LayerInfos |
||
Get_LegendInfos |
||
Get_Config |
||
Get_MQT |
||
Get_Configuration |
||
Get_Tile |
||
Get_Symbols |
||
Get_Textures |
||
Get_VirtualCacheDirectory |
Операции сервиса изображений
Если вы опубликовали сервис изображений на основе набора данных мозаики, все функции по умолчанию включены. Если вы опубликовали сервис из другого источника, например набора растровых данных, компилированного определения сервиса изображений или файла слоя, применимы и включены только функции Изображение (Image) и Метаданные (Metadata).
Изображение | Каталог | Загрузить | Метаданные | Пикселы |
---|---|---|---|---|
ExportImage | Поля | Загрузить | Метаданные | GetNativePixelBlock |
ExportMapImage | GetCatalogItemCount | GetFile | GetRasterMetadata | GetPixelBlock |
GenerateServiceInfo | GetCatalogItemIDs | |||
GetImage | GetCatalogItems | |||
"Идентифицировать (Identify)" | GetNativeRasterInfo | |||
ServiceInfo | GetRasterInfo | |||
Версия | GetThumbnail |