Советы по повышению производительности работы веб-инструментов

Пользователям необходимо, чтобы инструменты работали настолько быстро, насколько это возможно, поэтому веб-инструмент должен быть эффективным. Так как ArcGIS Server может поддерживать несколько клиентов одновременно, неэффективные сервисы могут перегрузить ваш сервер. Чем эффективнее сервисы, тем больше клиентов будет обслуживаться при использовании тех же вычислительных ресурсов.

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

Использование слоев для рабочих данных

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

Например, сервис Viewshed на Esri SampleServer и Расширение ArcGIS Network Analyst создают полигоны времени в пути, которые используют слои. В зависимости от размера набора данных это может позволить выиграть от 1 до 2 секунд для каждого выполнения сервиса.

Использование локальных данных в ArcGIS Server

Данные проекции, необходимые веб-инструментам, должны быть локальными для ArcGIS Server. Для доступа к данным с общим доступом, расположенным на сетевом ресурсе (UNC), потребуется больше времени, чем для доступа к данным, размещенным на локальном компьютере. Показатели производительности значительно отличаются, однако нередко чтение и запись данных по локальной сети занимает примерно в два раза больше времени, чем при выполнении этих же операций на локальном диске.

Запись промежуточных данных в память

Записывайте промежуточные (временные) данные в рабочую область memory. Запись данных в память происходит быстрее, чем запись данных на диск.

Примечание:

Можно также записывать выходные данные в память, если при этом не указана опция просматривать результаты в виде слоя изображений карты.

Дополнительные сведения о записи данных в память

Предварительная обработка данных, используемая задачами

Большинство веб-инструментов предназначены преимущественно для ответов на определенные пространственные запросы, осуществляемые веб-клиентами. Так как эти рабочие процессы зачастую являются определенными операциями с известными данными, всегда есть возможность предварительно обработать данные для оптимизации операций. Например, добавление атрибута или пространственного индекса является предварительной обработкой для оптимизации операций выбора атрибутов или пространственных объектов.

  • Можно предварительно рассчитать расстояния от известных местоположений с помощью инструментов Ближайший или Построить таблицу соседних объектов. Предположим, сервис позволяет клиентам выбирать свободные участки на заданном пользователем расстоянии от реки Los Angeles River. Можно использовать инструмент Выбрать в слое по расположению для выполнения этого выбора, однако будет гораздо быстрее предварительно рассчитать расстояние до каждого участка от реки Лос-Анджелес (с помощью инструмента Ближайший объект) и сохранить это расстояние в качестве атрибута участка. Этот атрибут можно индексировать с помощью инструмента Добавить атрибутивный индекс. Теперь при запросе клиента задача выполнит выбор атрибута на основе атрибута расстояния, а не будет выполнять менее эффективный пространственный запрос.

Добавление атрибутивных индексов

Если инструмент выбирает данные с помощью запросов атрибутов, создайте атрибутивный индекс для каждого атрибута, используемого в запросах, с помощью инструмента Добавить атрибутивный индекс. Индекс необходимо создать только один раз за пределами модели или скрипта.

Добавление пространственных индексов

Если модель или скрипт выполняет пространственные запросы в шейп-файлах, создайте пространственный индекс для шейп-файла с помощью инструмента Добавить пространственный индекс. Если используются классы объектов базы геоданных, пространственные индексы создаются и поддерживаются автоматически. В некоторых случаях повторный пересчет пространственного индекса может повысить производительность, как описано в разделе Пространственные индексы в базе геоданных.

Использование синхронного режима (вместо асинхронного)

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

Отказ от ненужных преобразований координат

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

Уменьшение объемов данных

Любое программное обеспечение, которое обрабатывает данные, работает быстрее, если набор данных небольшой. Существуют следующие способы уменьшения объема географических данных:

  • Удалите ненужные атрибуты в рабочих данных с помощью инструмента Удалить поле.
  • Линейные и полигональные объекты имеют вершины, которые определяют их формы. Каждая вершина является координатой x,y. Объекты могут иметь больше вершин, чем нужно, что излишне увеличивает размер набора данных.
    • Если данные поступают из внешнего источника, в них могут содержаться дублированные вершины или вершины, которые так близко расположены друг к другу, что не представляют какой-либо значимости для определения объекта.
    • Количество вершин не соответствует масштабу анализа. Например, объекты содержат детали, которые приемлемы в крупных масштабах, однако в анализе и представлениях используется мелкий масштаб.
    Можно использовать инструменты Упростить линию, Упростить полигон и Генерализовать для удаления ненужных вершин из данных, чтобы настроить соответствующий уровень детализации.