Комментарии 82
Центось недополучает память, потому что у неё альтернативно одарённое ядро с поддержкой всякой античной хрени. Ядро получает всё, что дали, но из-за странных memblocks, которые резервируются на ранних этапах инициализации ядра, userspace (и основная часть ядра) видит меньше.
Все правильно. Теперь можно отключить файл подкачки.
Выводы такие – добавление памяти улучшает производительность системы, наличие файла подкачки также влияет положительно.
На хабре было уже две статьи кажется, почему не стоит отключать файл подкачки. Без файла подкачки наоборот растет число обращений к диску, так как системе некуда выгрузить неиспользуемые страницы памяти. Как то так.
Ой, ну вот не надо на те статьи ссылаться !
Их авторы в комментариях под ними так и не смогли объяснить зачем нужен своп когда оперативки хоть попой ешь !
Конечно для случая который рассматривается в этой статье своп отключать не стоит. И да - для экономных/бережливых (или бедных/жадных - тут уж как посмотреть :) ) действительно теория о вреде отключения свопа верна.
Но !
Если оперативки реально много то отключение свопа не только не вредно, но и полезно !
free -h
total used free shared buff/cache available
Mem: 62G 2,9G 44G 2,6G 15G 56G
Swap: 0B 0B 0B
Вот на моём сервере такая ситуация (это под нагрузкой).
И зачем мне своп :) ?
С ТАКИМИ пропорциями использования RAM конечно своп никакой не нужен, это очевидно. Но случай как у вас скорее исключение, чем правило.
А это вы не сталкивались с приложениями, которым нужен разом большой блок памяти, хотя он весь и не используется. Попробуйте, скажем, дамп планеты OpenStreetMap (размером 58 гигабайт в бинарном формате на сегодня) распарсить, узнаете.
Тут надо скорее задаться вопросом, а зачем вам столько вхолостую стоящей памяти?
У меня доступ к рабочей станции на RHEL по работе, 64Gb оперативки и такой же своп. И да, во время работы сожрать 30+Gb оперативки - это не фантастика (хотя и не регулярно), а я на этой станции не единственный пользователь работающий одновременно. Я более чем допускаю ситуацию когда съедят всю оперативку и половину свопа, ты всё ещё хочешь посоветовать нашим АСУ-шникам потушить своп?
ты всё ещё хочешь посоветовать нашим АСУ-шникам потушить своп?
Это из серии "А Вы уже перестали пить коньяк по утрам ?"
Я разве писал что хочу что-то советовать вашим АСУ-шникам ?
Простите, но у Вас явные проблемы с восприятием информации изложенной в текстовом виде.
Что в моей фразе Вам непонятно ?:
Вот на моём сервере такая ситуация (это под нагрузкой).
Общего в моём и вашем случае только общее кол-во оперативки. У Вас под нагрузкой "30+Gb оперативки - это не фантастика", а уменя как в приведённом мной вывое команды free -h. И разумеется в вашем случае своп отключать вредно и ненужно, а в моём можно и полезно :)
Так доступно объяснил ?
@ju5tevg3niy Экономия на спичках
@morijndael Запас карман не тянет :)
@N-Cube Да, есть такие приложения и что ? У меня-то на сервере их нет ! Разумеется если Вы в работе используете такое то Вам своп отключать не стоит - но это и так понятно. Ко всему надо с головой подходить. Теоретическое наличие таких приложений в мире (при отсутвии их на сервере в продакшене) не делает утверждение "своп никогда нельзя отключать" верным !
@Evengard Спасибо за понимание :) !
Ну да, это не про рам-бояр. Где же такого мецената найти? Свой проект запустить - у детишек отобрать кусочек хлебушка.
Захотелось лёгкого мониторинга, лучший выбор - https://m.habr.com/ru/post/548372/
Посмотрел цены на сервера
1013.9999999999999 руб./месяц
какая прелесть :)
On Twitter, Michael Dyrynda writes:
️ Never ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever store currency as a float in your database
I completely agree with this statement.
Отсюда.
www.php.net/manual/en/language.types.float.php
0.1 * .1 results in 0.010000000000000002
0.7 + .1 results in 0.7999999999999999
1.1 + .1 results in 1.2000000000000002
Сервис может например доставать цену из БД, а НДС (или другие операции) на лету считать.
Это проблема уровня процессора, а если быть совсем точным — периодических дробей, которыми в двоичной системе являются многие десятичные дроби.
Например 7/10
А для разработчика это может быть проблемой. Особенно если он не знает, что такие проблемы бывают и как их решать.
Так пусть разбирается
Билайн берет при тарифе Москва-Калуга в 10р 19коп за 2 минуты разговора 20р 39коп и не парится.
Девочка на тех поддержке утверждает, что внутри оно считается до 4 знаков после запятой, и повышенная точность приводит вот к таким эффектам.
я ни разу не devops и не особо глубоко разбираюсь в Linux
Спасибо, я понял что мне еще расти и расти в этом смысле хотя бы до вас :)
Как видите, это оказалось вполне возможно.
— вывод получился в стиле может увижу динозавра на улице, а может не увижу. Очень странно делать выводы о производительности, не замерив скорость работы: дисковой подсистемы, CPU и RAM. Теоретически, можно в сервер запихать шайтан NVMe у которого скорость будет «максимально приближенная к скорости RAM». В этом случае VPS с 1Гб RAM и свопом на 4 Гб будет чувствовать себя прекрасно. Дополните пост замерами, хоть какие то выводы можно будет сделать.
Дык в скринах видно, что диск у него NVMe, что означает, что добавление свапа стоит где-то вдвое больше по времени относительно добавления памяти(!), естественно при таком диске мониторинг хоть как-то возможен. Вот воткни он на своей ВМке HDD вместо NVMe (SSD при таких нагрузках скорее всего справится с бешеным свапом), сразу будет видно, что он жестко уперся в гиг и никуда не может дальше взлетать, а заодно задержки на запись всей телеметрии на хард будут тормозить его приложение ещё больше.
Коротко, для «академической» объективности необходимы замеры скорости работы ВМ без нагрузки.
Юнит тестов нет, приложение запущено просто в докере (а как же кубирнэтис?), деплой просто клоном? Вы серьезно? Кто же без женкинса это делает?
Почему у вас ничего не билдится? Скриптовый нод.жс не требует компиляции? Ну так придумайте что-нибудь - вы же профессионал. Накиньте линт какой-нить или фреймворков, чтобы их каждый раз надо было устанавливать пакетным манагером. Сверху все это ещё бы в тайпскрипт завернуть, тогда можно будет полноценно билдить - проверять не затерялись ли в интегерах стринги.
Но, в общем, зачёт. Золотое правило выполнено - 90% ресурсов под инфраструктуру, остатки под приложения. Если начнет тормозить, можно просто вбросить в виртуалку памяти... А нет, это слишком сложно, в облаках же просто тип машины меняется. Там автоматом и пару ядер процессора накинется. Главное потом заглянуть в наши 100500 метрик графаны... Ну, ладно ладно, в те две CPU(%) и RAM(free) (остальные нужны просто чтобы дашборд красивый как кокпит самолёта с кнопочками был) и убедится, что оптимизация выполнена успешно и, даже, база данных в контейнере (которой мы конечно не выделяли никаких приоритетов и отдельных ресурсов в кластере) начала что-то там по select'у выводить.
И вот теперь, когда эффективность и продуктивность бьёт ключём, гаечным, все рекорды и "нам специалисты не нужны, у нас всё автоматически в облаке работает", можно дать заслуженному девопсу социалистического труда, демо-стенд, чтобы он выдернул из зоопарка в проде один сервис, разобрался для чего он вообще нужен, адекватно настроил, и написал корпоративный блог. Чтобы кто-то другой почитал его, воодушевился, навалил бы свою кучу, ой, то есть инфраструктуру по-копирке, и написал бы про единственное адекватно рабочее место, и так по кругу.
Молодой блондин-маркетолог, понимающий разницу между языками программирования, такими как C++, и средствами для автоматизации развертывания инфраструктуры, как, например, Jenkins или Docker.
Чет не пойму прикола, объясните популярно: vps о 4 ядрах, 6 Гб оперативки и примерно 10 гб на винте стоит порядка 2-3 тыр в месяц. Набор железа с подобными ттх стоит нуу.. можно собрать в сравнимых ценах за пару-тройку месяцев аренды в пределах порядка. Не проще собрать две таких системы (вторую на резерв) и гонять бесплатно на своем железе, с которым делай что хочешь?? Ну, в разумном кругу задач, ессно.
PS TCO включает помимо железок ещё кучу всего. Питание, кондиционирование, гарантию на замену сгоревших компонентов, лицензии, Интернет, ФОТ тех, кто это добро будет мониторить и чинить, если что… Так что в краткосрочной перспективе, или когда нагрузка непонятна (а вдруг выстрелит, и надо будет x10 по железу?) может вполне быть оправданно такие OPEX тащить.
Сказки про «всё ушли в облака» хорошо продаются. Но считать надо обязательно. Как аргумент «за» стоит рассматривать требования по SLA инфраструктуры. Если нужны четыре девятки и выше, то начальные вложения могут выступить отсекающим порогом. Упрощённо: на свою квартиру не накопить, и даже на первоначальный взнос для ипотеки не вложиться, остаётся по съемным шариться.
Ну как бесплатно, за электричество накиньте, за новый винт, за аптайм, за гибкость - когда вы вот так херак и добавили ещё одно ядро или памяти, причем сколько угодно без необходимости бежать в магазин за новым процом, а когда стало не надо вы просто удалили свой сервер, а не выставили его на Авито. Потом ещё за интернет с гарантированной полосой и резервированием накинуть. Может ещё что то забыл
Пример: UPS тянет 15-30 минут. Если электричество пропало на 1 час, то что выгоднее, потерять клиентов, или заранее купить бензогенератор/дизель? А сколько на цену этого ДГУ облачной аренды можно было бы купить? И что нам в данном конкретном случае интереснее?
Другой вариант. Нужно GPU «на погонять». Что нынче интереснее, арендовать или купить дико переоцененные карточки, чтобы свои были?
В общем, нет общего рецепта. Есть алгоритм принятия решения. А бизнес там или стартап какой — без разницы.
В остальном написано хорошо, забросил в закладки (тот случай, когда про Loki и Tempo читал, но руки не доходили толком разобраться).
Зачем платить за 1 core 1 ram и использовать какого-то непонятного провайдера для тестов, если в,можно сказать,эталонном AWS это free tier? :)
Вместо Prometheus лучше использовать VictoriaMetrics, который менее требователен к ресурсам и более шустр + умеет нормально долго хранить метрики (если это конечно нужно) и много что ещё. Для некоторых моих проектов полностью заменил Prometheus in place, т.е. Grafana с ним работает как с Prometheus без дополнительных настроек.
Сетевым трафиком для такого теста можно пренебречь.
Но делать тесты и замеры на AWS гораздо более точно, чем использовать какой-то хостинг, где непонятно как выделяются ресурсы машине.
Справедливости ради в aws free tier shared , а не dedicated instance, но там есть способы определения того, как и когда эти ресурсы используются и это точно лучше noname hosting.
А докер он насколько много памяти жрёт? И процессора? Может быть в таки условиях имеет смысл от него отказаться и всё заработает в 100 раз быстрее? Или он практически не заметен?
Оверхед в плане памяти на уровне погрешности. Несколько увеличивает расход места на диске и нагрузку на диск, но вторым при ССД можно принебречь.
Можно заменить на подман и ничего не изменится, удобство сохранится.
На виртуальную машину 1 ядро 1Гб — это ошибка разворачивать сервисы в Докер, каждый контейнер отдельная ОС, которая отнимает ценные ресурсы. Да это удобно, ковыряться в совместимости пакетов не нужно, легко обновлять, но теряется производительность.
каждый контейнер отдельная ОС, которая отнимает ценные ресурсы
это не так. Докер — это всего лишь изоляция на базе cgroups & namespaces, что и так есть в ядре линукса. С одной стороны — действительно докер не дает оверхеда поэтому, с другой — есть граничные случаи (сеть/диск), когда снижение производительности может быть значительно (из-за особенностей работы bridge сетей и/или overlayfs)
Вообще пишут, что у Докера околонулевой оверхед по производительности. Docker is nearly identical to native performance and faster than KVM in every category (из отчета IBM примерно 6 летней давности — может конечно что-то изменилось с тех пор).
Вообще пишут, что у Докера околонулевой оверхед по производительности.
Допустим приложение в контейнере работает с той же скоростью, что и без контейнера. Но сам то Докер тоже потребляет ресурсы. Не зря же у него в требованиях минимум 512 мегабайт и рекомендованных 2 гигабайта?
В случае с Docker, вы можете создать два контейнера с полным набором web-server+php. В результате, то же самое, в Docker будет занимать больше RAM.
В случае с Docker, вы можете создать два контейнера с полным набором web-server+php. В результате, то же самое, в Docker будет занимать больше RAM.
Это не объясняет откуда взялись требования иметь минимум 512 мегабайт памяти и рекомендация иметь 2 гигабайта. Если докер действительно не требует памяти, то таких рекомендаций вроде быть не должно.
Откажитесь от демона Докера и используйте подман. Нет демона, нет оверхеда.
Даже за демона «платить» не надо, потому что демона нет.
Мне просто спокойней платить фиксированную сумму и иметь в своем распоряжении все ресурсы, которые дает VPS
берешь и устанавливаешь ОКметер — для одного сервера у них даже бесплатный тариф есть (был?)
1) у облачного мониторинга newrelic есть бесплатный план для небольших сетапов на 100гб данных в месяц (что много, если без логов), умеет в мониторинг, трейсинг и логи
2) netdata и netdata cloud
На всякий случай хочу предупредить — prometheus иногда любит жрать много памяти на тяжелых запросах. Если метрик много, хранятся долго, и в графане есть большие дашборды — то случайно выбрав период времени "последний год" можно получить неприятный сюрприз (если оно уже год работает и retention policy разрешает столько хранить). Поэтому рекомендую как минимум настроить квоты на использование памяти, чтобы если что — хотя бы падал только prometheus.
1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей