ЦП базы данных Azure SQL без обслуживания оплачивается постоянно

Поэтому у меня возникла небольшая проблема с настройкой новой бессерверной базы данных Azure SQL.

Я продолжаю получать высокие счета за использование ЦП, что стоит целое состояние, я даже прибегнул к созданию новой БД с новым именем в новом регионе, с новым именем пользователя и паролем, а также заблокировал брандмауэр. Резервное копирование отключено, как и любые автоматические функции. Но как только развертывание завершается, мне начинают выставлять счета.

Я запустил профилировщик sql, и ничего даже не касается БД.

Кто-нибудь уже сталкивался с этой проблемой или знает, с чего начать поиск?

Какое значение установлено для автоматической паузы? Минимум 1 час.

wBob 21.12.2020 10:13

Он установлен на 1 час, но он никогда не останавливается, так как происходит какой-то тип использования, который я не знаю, откуда он взялся.

Altus Baard 21.12.2020 10:24

Я испытал подобное. Вы можете запустить sp_who2 или установить sp_whoIsActive, что даст вам больше информации о любых активных соединениях, убьет все, что вам не нужно / распознает, если вы знаете, что делаете, и понимаете последствия команды kill. Одним неприятным обходным путем является временное изменение уровня базы данных на базовый или стандартный, а затем обратное его изменение. Казалось, что это работает, но, очевидно, не доходит до основной причины. Что нам действительно нужно, так это возможность вручную приостановить работу базы данных, чтобы обеспечить паритет функций с Synapse, и инструменты для правильной диагностики того, что не дает базе данных бодрствовать.

wBob 21.12.2020 10:49

Вы упомянули Profiler — вы используете его через Azure Data Studio? Это запускает сеансы расширенных событий, возможно, есть соединение. У меня было ощущение, что это Azure DevOps, но я так и не докопался до сути.

wBob 21.12.2020 10:51

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

Altus Baard 21.12.2020 10:53

Я выполнил это упражнение, внес изменения, подождал чуть больше часа, перепроверил, внес изменения, но в итоге удалил его. Я могу повторно развернуть среду разработки из Azure DevOps и удалить ее.

wBob 21.12.2020 11:00

Пробовал конвертировать из Basic, безуспешно, все равно начал выставлять счета, как только конвертация была завершена.

Altus Baard 21.12.2020 12:44

Так это не работает. Он начнет выставлять счета, как только он будет преобразован. Предполагается, что он остановится после периода автоматической паузы, то есть через 1 час в вашем случае, если нет активных подключений. Вам придется подождать.

wBob 21.12.2020 12:52

Извините, это то, что я имел в виду, я ждал, пока он должен был сделать паузу, но он никогда не останавливается.

Altus Baard 21.12.2020 14:29

У меня такая же проблема, кто-нибудь нашел правильное решение?

Andreas Wendl 26.03.2021 10:31
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
4
10
4 874
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Мы не можем остановить/запустить серверы SQL Azure. База данных SQL Azure находится на общем узле. на этом сервере есть другие арендаторы. У вас есть доступ к базе данных, но не к соответствующему серверу хостинга. На самом деле невозможно приостановить/остановить выставление счетов за вашу базу данных SQL Azure.

В качестве альтернативы:

  1. Мы можем уменьшить размер базы данных Azure SQL, что снизит стоимость следующего часа обслуживания.
  2. Если вы действительно не хотите платить за базу данных, вы можете сделать резервную копию БД в хранилище BLOB-объектов, удалить базу данных, а затем восстановить ее при необходимости. Вы можете ссылаться на эту документацию.

Документация достаточно ясно описывает условия, необходимые для запуска автопаузы:

Автопауза срабатывает, если выполняются все следующие условия. на время задержки автопаузы:

Количество сеансов = 0 ЦП = 0 для рабочей нагрузки пользователя, работающей в пользовательском пуле

В нем также перечислены некоторые условия, которые могут помешать автопаузе — вам следует дважды проверить, не включены ли какие-либо из следующих действий:

  • Георепликация (активные группы георепликации и автоотработки отказа).
  • Долгосрочное хранение резервных копий (LTR).
  • База данных синхронизации, используемая при синхронизации данных SQL. В отличие от баз данных синхронизации, базы данных-концентраторы и базы данных-участники поддерживают автоматическую паузу.
  • Псевдоним DNS
  • База данных вакансий, используемая в Elastic Jobs (предварительный просмотр).

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

  1. Портал Azure — портал позволяет детализировать действия, просто щелкнув концентратор Intelligent Performance и колонку Query Performance Insight:

Нажмите на идентификаторы запросов (в красном поле на моем изображении), чтобы сосредоточиться на отдельных запросах.

  1. Подключитесь к базе данных и запустите sp_who2 или sp_whoIsActive (который сейчас размещен на github), чтобы получить список активных сеансов. Если вы обнаружите активные сеансы, вы можете либо отключить их (например, активные соединения SQL Server Management Studio (SSMS) или Azure Data Studio (ADS)) или kill их, если вы знаете, что делаете, и понимаете последствия уничтожения. команда.
  2. Один немного неприятный обходной путь, который я нашел (здесь), заключался в переключении уровня на стандартный и обратно на бессерверный. Я ожидаю, что это просто приведет к уничтожению всех активных соединений, чтобы переключить уровень, и не доберется до основной причины, но это сработало для меня.

Я бы посоветовал вам попытаться диагностировать активные соединения, используя метод 1 или 2, описанный выше, и сообщить об этом.

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

Altus Baard 23.12.2020 14:01

Я не уверен, был ли вопрос об автоматической паузе или просто о высокой стоимости с самого начала.

У меня такая же проблема, что с меня постоянно заряжают почти максимальные vCores, даже когда ничего не запущено (видимо, по данным sp_whoisactive)...

Один полезный указатель, который я нашел по этой причине, заключается в следующем: https://learn.microsoft.com/en-us/azure/azure-sql/database/serverless-tier-overview#billing при этом

Объем выставленных счетов вычислений представлен следующей метрикой:

  • Метрика: app_cpu_billed (виртуальные ядра в секундах)
  • Определение: макс. (мин. виртуальные ядра, используемые виртуальные ядра, мин. память ГБ * 1/3, используемая память ГБ * 1/3)
  • Частота отчетов: в минуту

Это количество рассчитывается каждую секунду и агрегируется за 1 минуту.

Убийца, похоже, "использовал память ГБ". Если вы масштабируетесь до 8 виртуальных ядер и максимальной памяти 24 ГБ, то кажется, что SQL Server захватывает всю память, как только вы что-то делаете, и никогда не отпускает ее ... поэтому, даже если ваш ЦП работает на 10%, у вас есть все памяти и получать оплату за все «vCores» все время.

Я вообще не администратор базы данных, но я слышал, что это нормальное поведение для SQL Server, поэтому либо я пропустил что-то очевидное, либо это похоже на плагиат.

Обратите внимание, что метрика «Оплачивается ЦП приложения» не указана в долларах США. Он указывается в секундах vCore.

Таким образом, в вашем случае, если вы платите примерно 40 единиц в минуту, по 0,000145 долларов США за ВЫЧИСЛИТЕЛЬНЫЕ СТОИМОСТИ/VCORE/СЕКУНДУ (текущая ставка, которую я вижу на экране «Вычисления + хранилище» на портале), то с вас взимается плата. 0,0058 доллара в минуту или около 250 долларов в месяц.

Не знаю, каков ваш бюджет и есть ли у вас какие-либо недоразумения по поводу этой метрики, но у меня случился легкий сердечный приступ, когда я впервые увидел свой график ранее сегодня и ошибочно подумал, что он указан в долларах США.

Ответ принят как подходящий

Только что понял, что некоторые люди все еще приходят читать это для ответа, ответ есть / был, я просто продолжал удалять и воссоздавать базу данных, и проблема устранилась сама собой.

Итак, короткий ответ, я не знаю, что это исправило, но теперь это исправлено

Вы сообщили об этом в Microsoft?

Caspi 15.08.2022 18:28

Другие вопросы по теме

Похожие вопросы