Клиенты ожидают и требуют быстрого обслуживания, поэтому веб-инструменты должны быть быстрыми и эффективными. Так как ArcGIS Server может поддерживать несколько клиентов одновременно, неэффективные сервисы могут перегрузить ваш сервер. Чем эффективнее сервисы, тем больше клиентов будет обслуживаться при использовании тех же вычислительных ресурсов.
Ниже приведены рекомендации и средства повышения производительности сервисов. В целом, методы приведены в порядке их значимости – первыми представлены те, которые обеспечивают наивысшее повышение производительности. Несколько последних рекомендаций позволят выиграть десятые доли секунды времени выполнения, что может оказаться важным для некоторых задач.
Использование слоев для рабочих данных
При запуске инструментов геообработки для создания публикуемого результата необходимо запустить инструмент с использованием в качестве входных объектов слоев, а не путей к наборам данных на диске. Слой ссылается на набор данных на диске; кроме того, слои кэшируют свойства, относящиеся к набору данных. Это в особенности применимо к слоям наборов сетевых данных и растровым слоям. Использование слоя вместо пути к набору данных имеет определенное преимущество в плане производительности, так как при запуске сервиса создается слой из набора данных, кэшируются базовые свойства набора данных, а сам набор данных остается открытым. При выполнении сервиса свойства набора данных тут же становятся доступными, а набор данных открывается и становится доступным для дальнейших действий, что является повышением производительности.
Например, сервис Viewshed на Esri SampleServer и дополнительный модуль ArcGIS Network Analyst создают области времени в пути, которые используют слои. В зависимости от размера набора данных это может выиграть от 1 до 2 секунд для каждого выполнения сервиса.
Использование локальных данных в ArcGIS Server
Данные проекции, необходимые веб-инструментам, должны быть локальными по отношению к ArcGIS Server. Для доступа к данным с общим доступом, расположенным на сетевом ресурсе (UNC), потребуется больше времени, чем для доступа к данным, размещенным на локальном компьютере. Показатели производительности значительно отличаются, однако нередко чтение и запись данных по локальной сети занимает примерно в два раза больше времени, чем при выполнении этих же операций на локальном диске.
Запись промежуточных данных в память
Записывайте промежуточные (временные) данные в рабочую область in_memory. Запись данных в память происходит быстрее, чем запись данных на диск.
Примечание:
Можно также записывать выходные данные в память, если при этом не указана опция просматривать результаты в виде слоя изображений карты.
Предварительная обработка данных, используемая задачами
Большинство веб-инструментов предназначены преимущественно для ответов на определенные пространственные запросы, осуществляемые веб-клиентами. Так как эти рабочие процессы зачастую являются определенными операциями с известными данными, всегда есть возможность предварительно обработать данные для оптимизации операций. Например, добавление атрибута или пространственного индекса является простой предварительной обработкой для оптимизации операций выбора атрибутов или пространственных объектов. Ниже приведены дополнительные примеры:
- Руководство Пример сервиса геообработки: водосборная область служит для предварительной обработки гидрологии путем создания суммарного стока и растра направления.
- Можно предварительно рассчитать расстояния от известных местоположений с помощью инструментов Ближайший или Построить таблицу соседних объектов. Предположим, сервис позволяет клиентам выбирать свободные участки на заданном пользователем расстоянии от реки Los Angeles River. Можно использовать инструмент Выбрать в слое по расположению для выполнения этого выбора, однако будет гораздо быстрее предварительно рассчитать расстояние до каждого участка от реки Лос-Анджелес (с помощью инструмента Ближайший объект) и сохранить это расстояние в качестве атрибута участка. Этот атрибут можно индексировать с помощью инструмента Добавить атрибутивный индекс. Теперь при запросе клиента задача выполнит простой и быстрый выбор атрибута на основе атрибута расстояния, а не будет выполнять менее эффективный пространственный запрос.
Добавление атрибутивных индексов
Если инструмент выбирает данные с помощью запросов атрибутов, создайте атрибутивный индекс для каждого атрибута, используемого в запросах. Можно использовать инструмент Добавить атрибутивный индекс. Индекс необходимо создать только один раз за пределами модели или скрипта.
Добавление пространственных индексов
Если модель или скрипт выполняет пространственные запросы в шейп-файлах, создайте пространственный индекс для шейп-файла с помощью инструмента Добавить пространственный индекс. Если используются классы объектов базы геоданных, пространственные индексы создаются и поддерживаются автоматически. В некоторых случаях повторный пересчет пространственного индекса может повысить производительность, как описано в разделе Настройка пространственных индексов.
Использование синхронного режима (вместо асинхронного)
Можно настроить запуск веб-инструмента синхронно или асинхронно. В асинхронном режиме сервер создает небольшое количество дополнительной служебной информации, что означает что асинхронная задача вряд ли будет выполнена менее чем за секунду. Выполнение той же задачи в синхронном режиме будет на десятую доли секунды быстрее, чем в асинхронном режиме.
Избегайте ненужных преобразований координат
Если в веб-инструменте используются наборы данных в других системах координат, инструментам геообработки, используемым задачей, может понадобиться преобразовать координаты в единую общую систему координат. В зависимости от размера наборов данных, преобразование координат из одной системы координат в другую может замедлить задачу. Необходимо знать, какая система координат используется в наборах данных и необходимо ли используемым в задаче инструментам преобразовывать эту систему координат. Может понадобиться преобразовать все наборы данных, используемые задачей, в единую систему координат.
Уменьшение объемов данных
Любое программное обеспечение, которое обрабатывает данные, работает быстрее, если набор данных небольшой. Существует ряд способов уменьшения объема географических данных:
- Удалите ненужные атрибуты в рабочих данных с помощью инструмента Удалить поле.
- Линейные и полигональные объекты имеют вершины, которые определяют их формы. Каждая вершина является координатой x,y. Объекты могут иметь больше вершин, чем нужно, что излишне увеличивает размер набора данных.
- Если данные поступают из внешнего источника, в них могут содержаться дублированные вершины или вершины, которые так близко расположены друг к другу, что не представляют какой-либо значимости для определения объекта.
- Количество вершин не соответствует масштабу анализа. Например, объекты содержат детали, которые приемлемы в крупных масштабах, однако в анализе и представлениях используется мелкий масштаб.