Балансировщик ресурсов Service Fabric использует устаревшую сообщаемую нагрузку
Изучая балансировщик ресурсов и показатели динамической нагрузки в Service Fabric, мы столкнулись с некоторыми вопросами (Запуск devbox SDK GA 2.0.135).
В обозревателе Service Fabric (портале и автономном приложении) мы видим, что балансировка выполняется очень часто, большую часть времени она выполняется практически мгновенно, и это происходит каждую секунду. При просмотре информации о метрике загрузки на узлах или разделах значения не обновляются, так как мы сообщаем о загрузке.
Мы отправляем динамический отчет о загрузке, основанный на нашем взаимодействии (HTTP-запрос к службе), увеличивая объем данных о загрузке одного раздела на большое количество. Этот всплеск становится видимым где-то через 5 минут, после чего балансировщик начинает балансировать. Похоже, это интервал обновления данных загрузки. Последнее указанное время обновляется все время, но без нового значения.
Мы добавили метрики в applicationmanifest и clustermanifest, чтобы убедиться, что они используются при балансировке. Это означает, что балансировщик ресурсов использует те же данные в течение 5 минут. Это настраиваемый параметр? Это ограничение, потому что он работает на devbox? Мы попробовали много переменных в clustermanifest, но, похоже, ни одна из них не влияет на это время обновления.
Если это невозможно адаптировать, кто-нибудь может объяснить, почему вы используете балансировщик с устаревшими данными? и почему был выбран этот 5-минутный интервал?
1 ответ
Это действительно настраиваемый параметр, по умолчанию это 5 минут. Идея заключается в том, что в prod у вас есть тонны реплик, которые все время загружают отчеты, и поэтому вы хотите их группировать, чтобы не рассылать Cluster Resource Manager со всеми этими сообщениями в качестве независимых сообщений.
Вы, вероятно, правы в том, что это значение слишком долго для местного развития. Мы рассмотрим изменение этого для локальных кластеров, но пока вы можете добавить следующее в свой локальный кластерный манифест, чтобы изменить время ожидания по умолчанию. Если там уже есть другие настройки, просто добавьте строку SendLoadReportInterval. Значение указывается в секундах, и вы можете настроить его соответствующим образом. Ниже приведен интервал между отчетами о загрузке по умолчанию с 5 минут (300 секунд) до 1 минуты (60 секунд).
<Section Name="ReconfigurationAgent">
<Parameter Name="SendLoadReportInterval" Value="60" />
</Section>
Обратите внимание, что это увеличивает нагрузку на некоторые системные службы (TANSTAAFL), и, как всегда, если вы работаете с сгенерированным или полным манифестом кластера, обязательно убедитесь, что Test-ServiceFabricClusterManifest перед его развертыванием. Если вы работаете с локальным кластером разработки, проще всего развернуть его, вероятно, просто изменив шаблон манифеста кластера (по умолчанию здесь: "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\NonSecure\ClusterManifestTemplate." xml") и просто добавьте строку, затем щелкните правой кнопкой мыши Диспетчер локальных кластеров Service Fabric в области уведомлений и выберите" Сбросить локальный кластер ". Это восстановит локальный кластер с вашими изменениями в шаблоне.