Сбой запланированного обновления данных PowerPivot с ошибкой "Истекло время ожидания операции"

Эта статья была написана РикОм Андрингом( Rick Andring), инженером по эскалации поддержки.

Симптомы

Предположим, что вы создаете книгу PowerPivot с одним или несколькими источниками данных и отправляете ее в Microsoft SharePoint Server 2016. При планировании обновления книги обновление завершается сбоем со следующей ошибкой:

Истекло время ожидания операции.

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

Снимок экрана: сбой обновления источника данных выполняется ровно 100 секунд на странице журнала обновления данных.

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

В журналах Единой службы ведения журнала SharePoint (ULS) вы видите фактическую ошибку, но кажется, что она не связана с чем-либо значимым с точки зрения причины.

DateTime w3wp.exe (0x00000) 0x59D4 PowerPivot Service Data Refresh 99 High EXCEPTION: System.Net.WebException: The operation has timed out at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)

Скорее всего, в журналах событий приложения вы увидите связанное событие (EventID: 5214).

Если у вас есть несколько книг, извлекаемые из одного источника, и одна книга замедляет работу источника данных, это приведет к тому, что другие запросы будут ждать или замедляться (за последние 100-е годы), может возникнуть сбой нескольких книг.

Причина

Эта проблема возникает из-за того, что SharePoint 2016 ограничивает один источник данных PowerPivot длительностью обновления в 100 секунд.

Примечание.

Это также может быть вызвано медленной или низкой производительности источников данных, если вы считаете, что данные должны обновляться до 100 секунд. Если вы извлекаете небольшой объем данных из сложного источника данных, который занимает много времени для запроса, можно рассмотреть альтернативные обходные решения, так как увеличение времени ожидания может быть не лучшим вариантом.

Временные решения

  1. Оптимизируйте запросы для более быстрого выполнения.

  2. Запрашивать меньше данных.

  3. Добавьте оборудование в источник данных, чтобы быстрее обрабатывать запросы.

  4. Используйте PowerShell, чтобы увеличить значение времени ожидания по умолчанию.

    • Выполните следующие команды в командной строке PowerShell с поддержкой администратора SharePoint 2016, изменив раздел "new_time_out_value" на требуемое значение времени ожидания.

      $farm = Get-SPFarm
      
      #The time out value "new_time_out_value" is in milliseconds, so be very careful to not set it too low!!!
      
      $farm.Properties.Add("WopiProxyRequestTimeout", new_time_out_value);
      
      $farm.Update();
      
      #to double-check the setting (make sure it is of type Int32, otherwise you will need to remove the property an add it again
      
      $farm.Properties["WopiProxyRequestTimeout"].GetType()
      
    • Выполните следующую команду, чтобы задать другое значение в будущем или при возникновении проблем с параметром.

      $farm = Get-SPFarm
      
      $farm.properties.Remove("WopiProxyRequestTimeout")
      
      $farm.Properties.Add("WopiProxyRequestTimeout", new_time_out_value);
      
      $farm.update()
      

Примечание.

Увеличьте это значение времени ожидания на свой страх и риск! Мы понимаем, что новое время ожидания по умолчанию очень низкое. Но следует также учитывать объем данных, который вы извлекаете, а также время, необходимое для извлечения этих данных. Установка слишком большого времени ожидания и предоставление пользователям возможности извлекать большие объемы данных может привести к проблемам с производительностью PowerPivot, SharePoint и Office Online Server. Вы также будете ограничены временем ожидания по умолчанию для SharePoint, SQL и внешних источников данных. Это значение времени ожидания не всегда может быть ответом. Существует больше обходных решений и вариантов оптимизации в зависимости от типа данных, которые вы извлекаете.