Настройка и конфигурация сервисов
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 for Server есть встроенные механизмы проверки неактивных подключений к базам геоданных ArcSDE. Эти проверки не позволяют сервису стать недоступным после отключения или прерывания соединения с ArcSDE.
Вы можете включить проверки подключения к данным, открыв закладку Процессы (Processes) диалогового окна Редактор сервисов (Service Editor) в ArcCatalog или 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 минутам). Недостаток короткого времени простоя состоит в том, что когда истекает время ожидания всех сервисов, клиенты должны подождать создания новых экземпляров.
При создании сервисов на ГИС-сервере как в результате запуска сервера, так и при ответе на запрос сервера клиентом, время, необходимое на инициализацию сервиса, называют временем создания. ГИС-сервер использует время ожидания запуска, определяющее период времени, который может пройти при попытке запуска перед тем, как ГИС-сервер сочтет попытку запуска неудачной и отменит создание сервиса.
ГИС-сервер хранит статистику о времени ожидания, времени использования и других событиях, которые происходят на сервере, в памяти и в журналах. Администратор сервера может использовать эту статистику, чтобы определить, например, не слишком ли велико время ожидания для сервиса, что может указывать на необходимость увеличения максимального числа экземпляров для этого сервиса.
Ограничение действий, которые пользователи могут совершать с сервисом
Чтобы облегчить управление веб-сервисами, у каждого типа сервиса есть набор разрешенных операций. Каждая из них содержит набор методов, которые можно включить или отключить как группу. Клиенты веб-сервиса могут вызывать только методы разрешенных операций.
Предположим, что вам нужно разрешить клиентам картографического веб-сервиса рисовать карту, но не запрашивать источники данных слоев карты. Для этого необходимо отключить операцию Запрос (Query) и убедиться, что операция Карта (Map) разрешена.
Сервисы объектов представляют особый интерес в этой дискуссии, так как они используются для веб-редактирования данных ГИС. У сервисов объектов есть дополнительный набор операций, которые можно использовать для ограничения функций редактирования: Запрос (Query), Создать (Create), Обновить (Update) и Удалить (Delete). Их можно включить или отключить на закладке Доступ к объектам (Feature Access) в диалоговом окне Редактор сервиса (Service Editor) в ArcGIS for Desktop. Вы также можете запретить пользователям редактирование объектов, которые были созданы не ими, применив управление доступом на основе владения.
В следующих таблицах показаны методы, которые включены при разрешении операций для различных типов сервисов:
Операции картографического сервиса
По умолчанию разрешены следующие операции картографических сервисов: Карта (Map), Запрос (Query) и Данные (Data).
Карта |
Запрос |
Данные |
---|---|---|
GetDocumentInfo |
"Идентифицировать (Identify)" |
Найти |
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).
Globe |
Анимация |
Запрос |
---|---|---|
Get_Version |
Get_Animation |
"Идентифицировать (Identify)" |
Get_LayerCount |
Найти |
|
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 | |||
Версия (Version) | GetThumbnail |