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

Недавние события, связанные с крупнейшим энергетическим кризисом в Москве натолкнули меня на мысль о написании этой статьи. На первый взгляд кажется, что общего между энергетической сетью и промышленной ИТ системой? Общего очень много...

(по следам недавних событий энергетического кризиса в Москве).

Недавние события, связанные с крупнейшим энергетическим кризисом в Москве натолкнули меня на мысль о написании этой статьи. На первый взгляд кажется, что общего между энергетической сетью и промышленной ИТ системой? Общего очень много. В первую очередь, это распределенные системы с большим количеством пользователей. У этих систем схожая сетевая топология , схожие проблемы и методы их разрешения. Я не буду вдаваться во все подробности, опишу основные моменты, касающиеся неравномерной нагрузки на систему по времени, а проще говоря, о «часах пик».

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

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

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

В вышеописанной ситуации необходимо вовремя принять решение об отключении определенного количества пользователей. Чем раньше будет принято это решение, тем меньшими потерями можно обойтись. Данное решение сложно принять без отсутствия эффективных инструментов мониторинга. Ведь нужно понять количество пользователей, которых необходимо отключить. Если отключить слишком мало то этот «снежный ком» не удастся остановить. Отключение слишком большого количества пользователей плохо само по себе. Отключать пользователей нужно не просто по количеству, а желательно по приоритетам. Например, важные объекты должны быть отключены в последнюю очередь.

В ИТ системах оборудование хоть и не выходит из строя, но аналогии можно привести те же самые. Пользователям по большому счету не важно почему ИТ система потеряла часть функциональности, или не работает вообще. Произошло ли это потому, что сервер вышел из строя, или потому, что серверные мощности перегружены, - результат один и тот же – система не функциональна (по крайней мере в полном объеме). Когда подобная ситуация может произойти в ИТ системах? Во-первых, это происходит исключительно в час пик, когда запас прочности серверных мощностей невелик. Не буду рассказывать о принципах оптимизации алгоритмов работы SQL сервера с данными. Просто поделим часть информации и часть серверных ресурсов на оперативные и не оперативные.

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

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

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

Эту ситуацию можно разрешить, только приняв вовремя решение об отключении определенного количества пользователей, либо об ограничении входного информационного потока. Чем раньше будет принято это решение, тем меньше вырастет очередь и меньше пользователей необходимо будет отключить. Пользователей нужно отключать на основании анализа. Их не должно быть слишком мало иначе не удастся разобрать очередь и таким образом освободить необходимое количество оперативных ресурсов. В этом случае небольшой очередной всплеск активности может увеличить входной информационный поток и ситуация повторится вновь. Отключаемые пользователи должны обладать определенным приоритетом. Например, главному бухгалтеру, наверное, не понравится что вы отключили его в момент обработки важной транзакции, в то время как секретарь успешно проводил документ который мог бы запросто быть проведенным вечером. Как правило, в самом наличии очереди обрабатываемых транзакций в MSSQL ничего плохого нет. Плохо тогда когда размер этой очередь превышает определенный порог.

Стандартного механизма разрешения подобной ситуации в MSSQL нет, единственный механизм - это механизм эскалации блокировок, когда сервер сам принимает решение об увеличении уровня блокировки в случае ее слишком маленькой гранулярности. Подобный механизм не позволяет решать проблему в полном объеме.

Для эффективного разрешение данной проблемы необходимо наличие развитых средств мониторинга систем , когда оперативно собирается информация о наличии свободных серверных ресурсов. Также необходимы средства нотификации, которые позволят получить ответственному сотруднику информацию о критической ситуации максимально оперативно. Определить приоритет транзакции можно, реализовав несложный дополнительный протокол. Фактически необходимо в начале «важных» транзакций в дополнительную таблицу записывать соответствие между степенью определяющей приоритет и уникальным идентификатором процесса (@@spid). После этого отключение сессий можно будет предпринимать более эффективно и с меньшими рисками.

Как определить количество пользователей, которых необходимо отключить? Предположим, вся очередь составляет порядка 30-и пользователей. Сколько пользователей нужно отключить? Десять, пятнадцать, а может и все двадцать? К сожалению универсального алгоритма не существует. Это зависит как правило от специфики ИТ системы. Здесь необходимо найти тонкий баланс.

Как часто возникают подобные ситуации? Здесь все определяется вероятностью возникновения подобной ситуации. На вероятность влияют такие основные факторы : объем свободных оперативных ресурсов (естественно зависит от мощности серверного оборудования), объем входящего информационного потока, блокировочный механизм (точнее специфика его использования в текущей БД), время обработки транзакций и т.п. Возникает эта ситуация довольно редко.

Наиболее актуальны подобные ситуации будут для 1С 8.0. так как там блокировочный механизм отличается от блокировочного механизма 1С 7.7. Причиной может стать как неожиданный всплеск активности пользователей (все одновременно начали проводить документы), а также ситуация когда был запущен какой то специфический большой отчет или открытая длинная транзакция. Длительно заблокированный ресурс, через который проходит большинство транзакций тоже может справоцировать подобную ситуацию.

Вот один из подходов к идентификации и отключению подобных процессов. Простейший вариант - отключение сессий с открытыми блокировками (в таком варианте будет отключено слишком много пользователей):

declare @str char(4000)
declare @Spid char(20)
declare Mylog cursor local fast_forward for
select Spid from sysprocesses  where (kpid>0 or blocked>0) and spid@@spid
open Mylog 
fetch Mylog into @Spid
while (@@fetch_status-1)
begin
set @str='kill '+rtrim(@Spid)
select @str
exec(@str) 

fetch Mylog into @Spid
end
close Mylog
deallocate Mylog 

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

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

Оригинал статьи http://www.softpoint.ru/article.php?id=16

Начать дискуссию

Какая налоговая информация о физических лицах передается в рамках СНГ

Hалоговые резиденты РФ, которые имеют незадекларированные счета, доходы и имущество в Казахстане или в Азербайджане, прямо сейчас находятся в наиболее уязвимом положении.

Бухгалтеры не видят актуальных данных ЕНС и не могут сформировать электронные подписи в ЛК. 🔨«Ночной бухгалтер» № 1733

Никогда такого не было... Бухгалтеры жалуются, что в личных кабинетах невозможно посмотреть актуальную информацию по сальдо ЕНС. Данные стоят на 15, 18, 19 июля. Если написать через ЛК налоговикам, сведения обновляются, но не всем. Формировать электронные подписи многие также не могут, не отправить 3-НДФЛ, не обновить электронные подписи.

Иллюстрация: Вера Ревина/Клерк.ру
Бесплатно с Трудовое право

Трудовые споры: сколько денег можно взыскать с работодателя за неправильную запись в трудовой книжке 

Все зависит от того, в состоянии ли работник доказать, что неправильная запись в трудовой лишила его заработка. Разбираем детали.

Трудовые споры: сколько денег можно взыскать с работодателя за неправильную запись в трудовой книжке 

Курсы повышения
квалификации

18
Официальное удостоверение с занесением в госреестр Рособрнадзора

Как будет регулироваться блогосфера, инфобизнес и коучинг в 2025 году

Как государство вводит блогеров, инфобизнесменов и коучей в правовое поле в 2024 году, что такое рисковый инфобизнес и когда блогерам потребуется уведомлять контрольно-надзорный орган.

Алгоритм оспаривания кадастровой стоимости

Алгоритм оспаривания кадастровой стоимости

Какой средний размер микрозайма в России

В июне 2024 года средний размер микрозайма составил 10,08 тыс. рублей.

Опытом делятся эксперты-практики, без воды

Роспотребнадзор собрал претензии граждан к платному образованию

Более 3,4 тыс. россиян обратились на «горячую линию» Роспотребнадзора по вопросам платных образовательных услуг.

Жара спровоцировала рост цен на мороженое

По данным госсистемы маркировки «Честный ЗНАК», во втором квартале 2024 года средневзвешенная цена мороженого составила 732 рубля за 1 килограмм. Это на 8% больше, чем в первом квартале, когда средняя цена была на уровне 703 рублей за кг.

Общество

Названы регионы-лидеры по заявкам на премии Правительства в области качества-2024

Роскачество представило рейтинг субъектов РФ по количеству заявок на участие в конкурсе на соискание премий Правительства РФ в области качества 2024 года.

Средний размер потребкредита составил 177,1 тыс. рублей

По данным Национального бюро кредитных историй (НБКИ), в июне 2024 года средний размер выданных потребительских кредитов составил 177,1 тыс. руб.

Мошенники начали прикрываться аномальной жарой

Чтобы убедить своих жертв раскрыть персональные данные и коды из СМС, аферисты прикрываются даже ссылками на летнюю жару.

Какие ключевые показатели финансового состояния необходимо отслеживать

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

Какие ключевые показатели финансового состояния необходимо отслеживать
Инвестиции

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

Эльвира Сахипзадовна преподнесла нам ключевую ставку 18%, ужесточила риторику и сделала инфляции ататат. Инфляция испугалась, а недвижка вообще обвалилась на 1%! Пока эксперты прогнозируют курс доллара по 100, он почему-то 86. Кроме того, закончился дивидендный сезон, ждём новые IPO, а эфир стал падать вместо того, чтобы расти.

Недвижка наконец-то рухнула на 1%, ключ 18%, завершился дивидендный сезон, а рубль показал всем чью-то мать. Воскресный инвестдайджест
ВЭД

Какая информация передается в рамках автоматического обмена информацией по финансовым счетам

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

Общество

👍 Президент подписал закон, упрощающий принятие решений на общих собраниях членов СНТ и ОНТ

Владимир Путин подписал разработанный при участии Росреестра федеральный закон, которым упрощен процесс принятия решений на общих собраниях членов садоводческих (СНТ) и огороднических товариществ.

Патентная активность российских изобретателей выросла на 7%

Более 15 000 заявок на патентование изобретений и полезных моделей подали отечественные разработчики в Федеральную службу по интеллектуальной собственности (Роспатент) с января по июнь 2024 года.

Личные финансы

А правильно ли вы разговариваете с детьми о деньгах

Все мы, кто родился в СССР — жертвы ограничивающих установок. С самого детства мы многократно слышали негативные фразы про деньги.

А правильно ли вы разговариваете с детьми о деньгах
Экономика России

Опубликованы поручения Президента по итогам Петербургского международного экономического форума-2024

Владимир Путин утвердил перечень поручений по итогам ПМЭФ-2024, который прошел 5–8 июня.

Кредитование

Нацбюро кредитных историй назвало средний размер автокредита

По данным кредиторов, передающих сведения в Национальное бюро кредитных историй (НБКИ), в июне 2024 года средний размер выданных автокредитов составил 1,47 млн рублей.

Интересные материалы

Мошенничество

МВД: если поменяли сим-карту, открепите номер от Госуслуг и мобильного приложения

Киберпреступники приобретают старые сим-карты, которые уже были использованы и поступили в повторную продажу.

1