Рекомендации по интеграции

Azure DevOps Services

Средства и интеграции между службами повышают эффективность azure DevOps Services. Если вы не осторожны, автоматизированные средства могут выйти из управления, выполняя высокий уровень запросов. Запросы приводят к тому, что Azure DevOps применяет ограничения скорости для вашей организации. Чтобы снизить риск достижения ограничений скорости, следуйте приведенным ниже рекомендациям при использовании ИНТЕРФЕЙСов REST API для интеграции с Azure DevOps.

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

В будущем вы можете отправлять только интерактивные элементы в Azure DevOps, которые ваша команда планирует включить или обратиться к ней. Сохраняйте рабочие элементы из Azure DevOps до тех пор, пока не потребуется. Например, не пытайтесь хранить данные телеметрии в Azure DevOps.

Обслуживание собственного хранилища данных

Не добавляйте рабочие элементы в Azure DevOps, чтобы они были в одном месте. Службы Azure DevOps Services не предназначены в качестве службы хранилища данных. Обслуживание собственного хранилища данных.

Пакетная обработка изменений

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

Ограничение версий

Многие редакции одного рабочего элемента создают большие двоичные объекты и вызывают проблемы с производительностью. Рекомендуется выполнять следующие задачи:

  • Уменьшить количество обновлений путем пакетной обработки изменений в поле. Не обновляйте только одно поле одновременно.
  • Если у вас есть изменения в нескольких рабочих элементах, пакетируйте эти изменения в одном действии.
  • Чтобы избежать ограничений на редакцию, не используйте минимальное количество исправлений.

Примечание.

Ограничение на редакцию рабочего элемента в 10 000 действует для обновлений, сделанных через REST API. Это ограничение ограничивает обновления rest API, но обновления с веб-портала не затрагиваются.

Оптимизация запросов

Оптимизируйте запросы, чтобы получить скромное количество результатов. Сложные условия и фильтры могут привести к длительным запросам. Сохраняйте время выполнения запросов в течение 30 секунд, чтобы избежать сбоев пороговых значений.

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

  • По возможности поместите предложение даты или ограничения диапазона в верхней части запроса.
  • Уменьшите количество предложений, использующих оператор Ever .
  • Уменьшите количество предложений, использующих оператор Contains , за исключением тегов.
    • Используйте оператор Contains Words при наличии.
    • Не используйте оператор Contains в длинных текстовых полях, так как это дорого.
  • Избегайте операторов "<>" и не операторов, когда это возможно.
  • Избегайте использования оператора In Group для больших групп.
  • Сведите к минимуму количество операторов Или и убедитесь, что перед использованием все еще есть области верхнего уровня.
  • Избегайте использования предложения OR между оператором In Group и paths area или Iteration Paths.
  • Уменьшите количество общих предложений, чтобы достичь цели по возможности.
  • Избегайте сортировки по любым полям, кроме основных полей, таких как идентификатор, когда это возможно.
  • Используйте настраиваемое поле в фильтрах, если вы хотите отсортировать его по пользовательскому полю.
  • При возможности укажите проект. В противном случае запрос получает область в всю коллекцию и может занять значительно больше времени, чем требуется. Un проверка "Запрос между проектами в правом верхнем углу" редактора запросов.

Запрос по проектам

  • Укажите, какой проект вы ищете, если запрос требует поиска по проектам.
  • Используйте теги вместо ключевое слово, если это возможно, если вы не ищете частичный текст строки.

Обработка сбоев с корректной обработкой

Обновления и запросы завершаются сбоем, если ограничения ресурсов или частота использования пересекают пороговое значение ограничения. Например, запрос, выполняющийся дольше 30 секунд, возвращает следующую ошибку:

VS402335: The timeout period (30 seconds) elapsed prior to completion of the query or the server is not responding.

При использовании REST API убедитесь, что код необходимо разработать для обработки сбоев соответствующим образом.

Ограничить количество ссылок на рабочий элемент максимально возможно, чтобы избежать применения ограничений ссылок.

Важно!

Мы планируем применить ограничения на редакцию рабочего элемента и ограничения ссылок в ближайшем будущем. Эти ограничения определяются мониторингом производительности и отзывом клиентов.

Не используйте запросы для создания отчетов

Использование запросов и отдельных вызовов рабочих элементов — лучший способ получения ограничений скорости, применяемых в вашей организации. Не выполняйте запросы для возврата больших списков рабочих элементов. Вместо этого используйте ссылки на рабочие элементы отчетов и редакции рабочих элементов REST API.

Дополнительные сведения см. в нашем примере C# на GitHub.