Сегодня я заметил, что мощный сервер у клиента ощутимо тормозит. И обнаружил кражу!
Бизнес облачного и виртуального хостинга строится на том, что они продают нам кусочки большого сервера. Хостинг продаёт нам виртуальные машины по тарифу, в котором указана мощность процессора и количество ядер.
Покупателям кажется, что это похоже на места в самолёте: на 100 кресел можно продать 100 билетов. Но хостинг продаёт гораздо больше. В отличие от самолёта, у хостинга кресла могут быть заняты частично — нагрузка изменяется со временем. Поэтому хостинг частенько продаёт 150 “билетов”, на 100 “кресел”.
Виртуальный сервер любезно отображает украденное процессорное время — показатель CPU Steal Time
. Он транслирует, какой процент времени наши приложения ждали своей очереди, пока все процессоры были заняты другими клиентами.
Если у вас крадут до 5%, в индустрии это считается технически допустимым. В виртуализации заложена конкуренция за ресурсы, можно понять. Но если показатель выше 5% — вы получаете меньше ресурсов, чем вам обещали.
Как это проверить:
Через терминал заходим на сервер.
Вводим команду top
или mpstat -P ALL 1
.
Ответ будет например таким:
%Cpu(s): 1.0 us, 0.5 sy, 0.0 ni, 97.0 id, 0.5 st
Смотрим за параметром Steal
или st
, в примере выше он последний. Он меняется со временем, поэтому хорошо бы его мониторить или сделать несколько замеров подряд в разное время.
Что делать, если steal
выше 5%:
– Писать в службу поддержки хостинга “Выявлен высокий показатель steal CPU, примите меры” и прикладыватьпоказатели с терминала. Скорее всего, ваш проект перенесут на другую ноду с меньшей нагрузкой.
– Брать тариф Dedicated CPU с гарантированным выделением ресурса. Обычно это в 3 раза дороже — Можно прикинуть, насколько сильно перегружены самолёты серверы на обычных тарифах.
– Переезжать на выделенный сервер — менее гибко, но будет гарантия доступности всех вычислительных ресурсов. Если у вас нагруженные приложения, то это ещё обойдётся дешевле облака.
– Если ситуация повторяется регулярно — хостинг жадный, нужно переезжать.
Моя история закончилась письмом в техподдержку. Показатель Steal time
доходил до 40%. Ночью с пятницы на субботу без лишних препирательств нас перенесли на менее загруженную ноду и показатель снизился до 0.5%.
Надо бы сделать автоматизацию, чтобы такое письмо писал робот 🤖