В эпоху Amazon и DigitalOcean мы все сильно привыкли к использованию виртуальных узлов. Это удобно и быстро.
Виртуальный сервер работает также как и физический — у него есть процессор, оперативная и постоянная память.
Важным (и единственным) отличием виртуального сервера от физического является то, что все ресурсы выделяются ему другой программой (обычно называется гипервизором) — компонентой платформы виртуализации.
Оперативную память и место на диске выделить сравнительно легко. Гипервизор просто размечает область на диске и в памяти, которая будет доступна только вашей виртуалке. С процессором дело обстоит иначе. Не существует простого механизма превратить одно ядро в десять и распределить между 10 виртуальными узлами. Вместо этого все узлы получают доступ к одному и тому же ядру, а гипервизор берет на себя ответственность за распределение ресурсов процессора между ними.
Если на виртуальных узлах становится слишком много задач, гипервизор перераспределяет ресурсы таким образом, чтобы обеспечить выполнение максимального количества задач. Как это выглядит на практике? Вы арендуете виртуальный сервер. Но на том же физическом оборудовании арендуют виртуальные сервера еще 25 человек. В какой-то момент времени часть (или все) из них начинают напрягать процессор (например, происходят всплески посетителей на сайтах). И тогда вы замечаете, что ваш сервер начал работать медленнее.
Если виртуальный узел начал тупить, первым делом нужно понять где проблема — у вас или у гипервизора. Для этого существует показатель Stolen CPU. Его можно легко увидеть, выполнив команду top:
Если вы работаете с виртуальными серверами, этот показатель нужно обязательно мониторить.
Stolen CPU — это количество времени, которое виртуальный сервер ждет процессорных ресурсов от гипервизора
Суммарное время в состоянии Stolen
будет доступно в статистке процессора:
root@node:~# cat /proc/stat cpu 704818582 1283 95229455 732476824 1717222 8296 30114918 12043519 0 0
# числа — это количество времени, которое процессор проводит в разных состояниях
Восьмое число слева — это суммарное время в состоянии Stolen
.
Нормальный показатель не должен превышать 1…2%. Если же показатель > 5%, это плохо. Платформа перегружена и любой рост нагрузки приведет к усугублению ситуации. В этом случае у вас есть два варианта:
В .io мы используем сотни виртуальных узлов, которые обрабатывают более 10 Тб данных каждый день. Обработка данных подразумевает использование больших процессорных мощностей. Когда мы впревые столкнулись с проблемой Stolen CPU, мы увидели почти катастрофическую картинку — сервер внезапно начал работать крайне медленно:
При этом показатель Stolen CPU обычно скакал от 1…2 до 20%. В момент появления проблемы он вырос почти до 30% и не падал ниже 20%:
Мы приняли решение перенести часть инфраструктуры на физическое железо. В чем получили ряд преимуществ:
Если вы работаете с виртуальным железом обязательно мониторьте показатель Stolen CPU (виден в top
). Если этот показатель постоянно >5%
, создайте новый сервер и мигрируйте на него. Если проблема наблюдается постоянно, рассмотрите возможность переезда на физическое железо.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…