Тратите много времени на повторяющиеся SQL-запросы, выполняя рутинные задачи вручную?
На бесплатном вебинаре, который пройдет 22 апреля в 20:00, мы решим эту проблему и научим вас создавать и использовать хранимые процедуры для автоматизации процессов в SQL! https://otus.pw/sYDb/
Представьте, что вы можете автоматизировать эти задачи с помощью хранимых процедур в MS SQL Server и PostgreSQL, увеличив свою эфффективность. Больше не придется тратить на это лишние силы.
Записывайтесь на урок, получайте практические навыки, а также скидку на большое обучение «SQL для разработчиков и аналитиков»: https://otus.pw/sYDb/
erid: 2W5zFGp9d2g
На бесплатном вебинаре, который пройдет 22 апреля в 20:00, мы решим эту проблему и научим вас создавать и использовать хранимые процедуры для автоматизации процессов в SQL! https://otus.pw/sYDb/
Представьте, что вы можете автоматизировать эти задачи с помощью хранимых процедур в MS SQL Server и PostgreSQL, увеличив свою эфффективность. Больше не придется тратить на это лишние силы.
Записывайтесь на урок, получайте практические навыки, а также скидку на большое обучение «SQL для разработчиков и аналитиков»: https://otus.pw/sYDb/
erid: 2W5zFGp9d2g
👍1
Какой способ безопаснее всего для передачи переменных окружения в systemd unit?
Anonymous Quiz
21%
Использовать Environment= внутри unit-файла
12%
Экспортировать переменные в shell перед systemctl start
46%
Использовать EnvironmentFile= и ограничить права доступа к файлу
22%
Добавить переменные в /etc/environment
👍6🔥2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
Ключевые особенности:
— Изоляция через PID, mount, user и network namespaces.
— Интеграция с systemd: контейнер можно управлять как обычным сервисом.
— Поддержка journald и машинного журнала логов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3
MTU + TSO/GSO/UDP: когда jumbo frame ломает overlay-сеть
VxLAN, GENEVE и прочие overlay-технологии давно стали стандартом — но часто ломаются на ровном месте.
Что происходит
При использовании VxLAN поверх обычной сети каждый пакет получает дополнительный заголовок (VxLAN + UDP + IP), что увеличивает размер.
Если интерфейсы или туннельная прослойка не умеют в fragment/reassembly или MTU меньше ожидаемого, пакеты просто начинают теряться.
Особенно часто это бьёт по TCP SYN-ACK и UDP VoIP/QUIC.
Где это проявляется
• SSH зависает после ввода пароля
• веб-приложения внезапно «грузятся вечно»
• мониторинг теряет метрики
• nginx падает в 502 на старте TLS
• kubelet не подключается к apiserver через туннель
Как диагностировать
1️⃣ Проверить MTU на всех интерфейсах в цепочке:
2️⃣ Проверить наличие offload’ов:
3️⃣ Поймать разрыв через tcpdump — будут видны обрезанные пакеты или ICMP fragmentation needed (не всегда!):
4️⃣ Визуально ловить баги через ping -M do:
Как лечить
⏺ Убедитесь, что внутренний MTU на overlay-интерфейсах (vxlan0, flannel.1 и т.п.) занижен хотя бы на 50 байт.
⏺ Отключите GSO/TSO, если видите нестабильность:
⏺ Используйте sysctl для отключения Path MTU discovery в VxLAN:
⏺ Проверяйте наличие проблемных маршрутов:
VxLAN, GENEVE и прочие overlay-технологии давно стали стандартом — но часто ломаются на ровном месте.
Один из таких кейсов — «всё работает, кроме какого-то странного трафика, который висит/рвётся/отваливается без объяснения». Виновник — неправильное сочетание MTU, jumbo-фреймов и offload’ов.
Что происходит
При использовании VxLAN поверх обычной сети каждый пакет получает дополнительный заголовок (VxLAN + UDP + IP), что увеличивает размер.
Если интерфейсы или туннельная прослойка не умеют в fragment/reassembly или MTU меньше ожидаемого, пакеты просто начинают теряться.
Особенно часто это бьёт по TCP SYN-ACK и UDP VoIP/QUIC.
Где это проявляется
• SSH зависает после ввода пароля
• веб-приложения внезапно «грузятся вечно»
• мониторинг теряет метрики
• nginx падает в 502 на старте TLS
• kubelet не подключается к apiserver через туннель
Как диагностировать
ip link show dev eth0
ip link show dev vxlan0
ethtool -k eth0 | grep -E '(tso|gso|gro)'
tcpdump -i vxlan0 -n -s 0 -vvv
ping -s 8972 -M do <ip>
Как лечить
ethtool -K eth0 gso off tso off
sysctl -w net.ipv4.ip_no_pmtu_disc=1
ip route get <destination>
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3
Yandex Cloud выкатил сервис по аренде выделенных серверов в открытый доступ, который подходит как для хостинга сайтов или настройки тестовых сред, так и в качестве дополнительных мощностей для развития текущих сервисов.
Сервис даёт возможность выбрать сервер готовой конфигурации, установить на него подходящую виртуализации, ОС и ПО, а также разграничить права доступа. И всё это без влияния «шумных» соседей, ведь все мощности доступны только одному клиенту.
Управлять можно через SSH, консоль KVM или по API. А за железо отвечают специалисты Yandex Cloud — меняют, обновляют, следят за работоспособностью. Всё, чтобы вы могли думать о развитии сервисов, а не железе.
Архитекторы подготовили подробные инструкции по настройке прав доступа, VRRP, сетевой связности, а также по подключению резервного копирования тут.
Сервис даёт возможность выбрать сервер готовой конфигурации, установить на него подходящую виртуализации, ОС и ПО, а также разграничить права доступа. И всё это без влияния «шумных» соседей, ведь все мощности доступны только одному клиенту.
Управлять можно через SSH, консоль KVM или по API. А за железо отвечают специалисты Yandex Cloud — меняют, обновляют, следят за работоспособностью. Всё, чтобы вы могли думать о развитии сервисов, а не железе.
Архитекторы подготовили подробные инструкции по настройке прав доступа, VRRP, сетевой связности, а также по подключению резервного копирования тут.
👍8🤔2
Виртуальные машины и контейнеры в одном окружении? Да, это реально!
На вебинаре в среду расскажем и покажем, как виртуализация в экосистеме Deckhouse делает возможным запуск виртуальных машин рядом с контейнерами, обеспечивая единое, управляемое Kubernetes-окружение для построения современного частного облака.
🗓 Дата: 23 апреля, среда
⏰ Время: 12:00 (МСК)
📌 Место: Онлайн, нужна регистрация
Обсудим:
🔹 какие возможности по управлению виртуальными машинами есть в Deckhouse;
🔹 для чего нужна совместная работа виртуальных машин и контейнеров;
🔹 какие сценарии виртуализации есть в экосистеме Deckhouse;
🔹 и главное — покажем тестовый стенд и приложение.
✍️ Участники вебинара смогут оставить заявку на тестирование Deckhouse Virtualization Platform или на запуск демоприложения в Deckhouse Kubernetes Platform.
Зарегистрироваться
На вебинаре в среду расскажем и покажем, как виртуализация в экосистеме Deckhouse делает возможным запуск виртуальных машин рядом с контейнерами, обеспечивая единое, управляемое Kubernetes-окружение для построения современного частного облака.
🗓 Дата: 23 апреля, среда
⏰ Время: 12:00 (МСК)
📌 Место: Онлайн, нужна регистрация
Обсудим:
🔹 какие возможности по управлению виртуальными машинами есть в Deckhouse;
🔹 для чего нужна совместная работа виртуальных машин и контейнеров;
🔹 какие сценарии виртуализации есть в экосистеме Deckhouse;
🔹 и главное — покажем тестовый стенд и приложение.
✍️ Участники вебинара смогут оставить заявку на тестирование Deckhouse Virtualization Platform или на запуск демоприложения в Deckhouse Kubernetes Platform.
Зарегистрироваться
👍1
TCP FIN_WAIT2 как зомби: кто на самом деле виноват
Когда сервер задыхается от тысяч FIN_WAIT2, первая реакция — «приложение не закрывает сокет». Но в реальности всё сложнее.
Что такое FIN_WAIT2?
После того как приложение вызывает close() на сокете, TCP-стек отправляет FIN и попадает в FIN_WAIT1. Как только получает ACK, соединение переходит в FIN_WAIT2. Ожидается, что вторая сторона тоже закроет соединение и отправит свой FIN.
Но если этого не происходит — соединение залипает. ОС ждёт. Иногда — вечно.
Где зарыта проблема?
1️⃣ Клиент не закрывает соединение
Часто виновник — клиентское приложение, которое “забывает” вызывать close(), особенно если сессия рвётся без ошибок.
2️⃣ Сервер не настраивает таймауты FIN_WAIT2
Linux по умолчанию может держать FIN_WAIT2 бесконечно, если сокет уже передан в userspace.
Проверить:
Но это работает только для сокетов, не переданных в userspace. Если accept() уже был вызван — ядро не может удалить соединение самостоятельно.
3️⃣ Не освобождается сокет в приложении
Даже если вы вызываете close(), соединение может оставаться активным, если сокет всё ещё держится в дескрипторах. Проверить можно так:
Как диагностировать
• Посмотреть, кто держит соединения:
• Локализовать виновника через lsof и netstat -p
• Проверить tcp_fin_timeout, tcp_keepalive_time и поведение приложения
Как лечить
⏺ Явно закрывайте соединения на клиенте, особенно если используете keep-alive
⏺ Включите tcp_tw_reuse и tcp_tw_recycle с осторожностью (лучше нет)
⏺ На стороне сервера: оберните close() в таймер или настройте logic shutdown после inactivity
⏺ Для embedded/ограниченных систем: можно использовать iptables для отсечения FIN_WAIT2 через conntrack timeout
Вместо вывода
FIN_WAIT2 — это не баг, а следствие честной реализации TCP. Но в проде оно ведёт к исчерпанию ресурсов и зомби-соединениям. Решение — всегда баланс между корректным shutdown и агрессивным таймаутом.
Когда сервер задыхается от тысяч FIN_WAIT2, первая реакция — «приложение не закрывает сокет». Но в реальности всё сложнее.
Это состояние — часть TCP state machine, в которой соединение уже завершено с одной стороны, но другая не закрыла свой конец. И залипнуть в нем можно надолго.
Что такое FIN_WAIT2?
После того как приложение вызывает close() на сокете, TCP-стек отправляет FIN и попадает в FIN_WAIT1. Как только получает ACK, соединение переходит в FIN_WAIT2. Ожидается, что вторая сторона тоже закроет соединение и отправит свой FIN.
Но если этого не происходит — соединение залипает. ОС ждёт. Иногда — вечно.
Где зарыта проблема?
Часто виновник — клиентское приложение, которое “забывает” вызывать close(), особенно если сессия рвётся без ошибок.
Linux по умолчанию может держать FIN_WAIT2 бесконечно, если сокет уже передан в userspace.
Проверить:
sysctl net.ipv4.tcp_fin_timeout
Но это работает только для сокетов, не переданных в userspace. Если accept() уже был вызван — ядро не может удалить соединение самостоятельно.
Даже если вы вызываете close(), соединение может оставаться активным, если сокет всё ещё держится в дескрипторах. Проверить можно так:
lsof -nP | grep TCP | grep FIN_WAIT2
Как диагностировать
• Посмотреть, кто держит соединения:
ss -o state fin-wait-2 '( sport = :443 )'
• Локализовать виновника через lsof и netstat -p
• Проверить tcp_fin_timeout, tcp_keepalive_time и поведение приложения
Как лечить
Вместо вывода
FIN_WAIT2 — это не баг, а следствие честной реализации TCP. Но в проде оно ведёт к исчерпанию ресурсов и зомби-соединениям. Решение — всегда баланс между корректным shutdown и агрессивным таймаутом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Заглядываем в конфиги и превращаем хаос в систему
💬 Шёпотом: курс «Ansible: Infrastructure as Code» стартует 28 апреля.
Подойдёт всем, кто хочет научиться:
🔹 работать с подходом IaC и автоматизировать рутину;
🔹 выполнять всякие сложные задачи типа блоковой замены, управления потоком выполнения и пр.;
🔹 настраивать Ansible под необходимые задачи;
🔹 писать свои модули;
🔹 решать сисадминские задачи;
🔹 встраивать Ansible в пайплайн Gitlab и много чего ещё.
Успевайте оформить обучение, пока действует ранняя цена 🤝
Программа курса и все подробности — по ссылке ⬅️
💬 Шёпотом: курс «Ansible: Infrastructure as Code» стартует 28 апреля.
Подойдёт всем, кто хочет научиться:
🔹 работать с подходом IaC и автоматизировать рутину;
🔹 выполнять всякие сложные задачи типа блоковой замены, управления потоком выполнения и пр.;
🔹 настраивать Ansible под необходимые задачи;
🔹 писать свои модули;
🔹 решать сисадминские задачи;
🔹 встраивать Ansible в пайплайн Gitlab и много чего ещё.
Успевайте оформить обучение, пока действует ранняя цена 🤝
Программа курса и все подробности — по ссылке ⬅️
👍2
Лимиты systemd: что произойдёт, если запустить 20k сервисов одновременно
Запустить 20 000 systemd-юнитов — звучит безумно, но на самом деле это вполне достижимо на современной машине. Вопрос в другом: где начнёт всё сыпаться?
На что упёрлись:
1️⃣ PID limits:
Первое, что кончилось — лимит процессов. Даже при ulimit -u unlimited, ядро имеет предельный pid_max. Проверить можно:
2️⃣ File descriptors:
Каждый сервис тянет за собой файловые дескрипторы: сокеты, логирование через journald, pipe’ы.
Мониторить:
3️⃣ Cgroups:
systemd создаёт по cgroup на каждый юнит. При большом количестве можно уткнуться в лимит вложенности или число control group’ов.
Проверка:
4️⃣ journal:
Если сервисы пишут в журнал, journald начинает лагать или просто отваливается. Особенно, если RateLimitInterval не сконфигурирован.
Проверить, сколько записей в секунду:
5️⃣ CPU scheduler:
Если юниты зависают или выходят с ошибкой, systemd тратит кучу ресурсов на перезапуск. И даже при Restart=no огромный пул сервисов может повлиять на responsiveness системы.
Как наблюдать:
⏺ systemd-analyze dump | grep 'Service State'
⏺ systemctl list-units | grep test@ | wc -l
⏺ top, iotop, pidstat, journalctl — всё идёт в бой.
Запустить 20 000 systemd-юнитов — звучит безумно, но на самом деле это вполне достижимо на современной машине. Вопрос в другом: где начнёт всё сыпаться?
Мы сгенерировали 20k простых сервисов с шаблоном ExecStart=/bin/sleep infinity, и попытались запустить их разом через systemctl start test@{1..20000}.
На что упёрлись:
Первое, что кончилось — лимит процессов. Даже при ulimit -u unlimited, ядро имеет предельный pid_max. Проверить можно:
cat /proc/sys/kernel/pid_max
Каждый сервис тянет за собой файловые дескрипторы: сокеты, логирование через journald, pipe’ы.
Мониторить:
lsof | wc -l
cat /proc/sys/fs/file-nr
systemd создаёт по cgroup на каждый юнит. При большом количестве можно уткнуться в лимит вложенности или число control group’ов.
Проверка:
systemctl status test@19999
cat /proc/self/cgroup
Если сервисы пишут в журнал, journald начинает лагать или просто отваливается. Особенно, если RateLimitInterval не сконфигурирован.
Проверить, сколько записей в секунду:
journalctl -o short-precise -f
Если юниты зависают или выходят с ошибкой, systemd тратит кучу ресурсов на перезапуск. И даже при Restart=no огромный пул сервисов может повлиять на responsiveness системы.
Как наблюдать:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3
📡 Kafka-подобный брокер, который умеет больше
Когда команда переходит на событийную архитектуру, приходит и Kafka. Но за ней — своя плата: поддержка transactional outbox, дубли, потеря сообщений, неудобная интеграция с базой. В Яндексе не стали с этим мириться и сделали YDB Topics — брокер, который сам умеет чуть больше.
Он совместим с Kafka-протоколом, но при этом глубоко встроен в YDB. Это значит: ACID-транзакции с одновременным участием топиков и таблиц из коробки и реальная отказоустойчивость без хаков. Плюс корпоративные фичи: квоты и роли.
На вебинаре 23 апреля в 12:00 покажут, как построить надёжную событийную систему на базе YDB Topics и при этом не усложнять жизнь себе и коллегам.
Когда команда переходит на событийную архитектуру, приходит и Kafka. Но за ней — своя плата: поддержка transactional outbox, дубли, потеря сообщений, неудобная интеграция с базой. В Яндексе не стали с этим мириться и сделали YDB Topics — брокер, который сам умеет чуть больше.
Он совместим с Kafka-протоколом, но при этом глубоко встроен в YDB. Это значит: ACID-транзакции с одновременным участием топиков и таблиц из коробки и реальная отказоустойчивость без хаков. Плюс корпоративные фичи: квоты и роли.
На вебинаре 23 апреля в 12:00 покажут, как построить надёжную событийную систему на базе YDB Topics и при этом не усложнять жизнь себе и коллегам.
🥴2🔥1
Что делает флаг --replace в команде ip rule add?
Anonymous Quiz
10%
Удаляет все правила и добавляет новое
74%
Обновляет существующее правило, если оно совпадает
5%
Удаляет старую таблицу маршрутов
11%
Флаг устарел и не используется
👍6❤2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
LSM реализует механизм hook-based security, в котором в ключевые точки ядра встроены хуки. Эти хуки вызываются перед выполнением чувствительных операций (например, доступ к файлу, сетевой сокет или выполнение бинарника), и LSM-расширение решает — разрешить или запретить операцию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1🔥1
Как найти самый медленный диск в RAID без iostat: только dd и strace
Когда RAID-массив уходит в degraded, и чтение с него начинает тормозить, первым делом хочется открыть iostat или dstat — но что делать, если этих утилит нет, или нужно быстро сориентироваться на минимальной системе?
RAID5 на mdadm, одно устройство помечено как degraded. Хотим понять, какой из оставшихся дисков тормозит, не прибегая к утилитам верхнего уровня.
1️⃣ dd по /dev/mdX с отслеживанием времени
Смотрим, залипает ли на конкретных участках. Если чтение “пульсирует” — скорее всего, где-то один из дисков тормозит при чтении блоков.
2️⃣ strace на dd — трекинг задержек в syscalls
Параметр -T покажет время, затраченное на каждый системный вызов read(). Если большинство идут быстро (<0.01s), а иногда появляются задержки в 0.2-0.5 секунды — именно в эти моменты диск фризит.
3️⃣ mdadm + cat /sys/block на live-данных
Можно сверить статистику по mdstat, а потом пойти глубже:
Затем для каждого устройства в массиве:
Здесь можно отследить рост времени обработки I/O по полям в /sys/block/*/stat. Если у одного устройства счётчики существенно выше — это он и есть.
smartctl на подозреваемом диске
После того, как нашли “виновника”, имеет смысл проверить его S.M.A.R.T.:
Когда RAID-массив уходит в degraded, и чтение с него начинает тормозить, первым делом хочется открыть iostat или dstat — но что делать, если этих утилит нет, или нужно быстро сориентироваться на минимальной системе?
RAID5 на mdadm, одно устройство помечено как degraded. Хотим понять, какой из оставшихся дисков тормозит, не прибегая к утилитам верхнего уровня.
dd if=/dev/md0 of=/dev/null bs=4M status=progress
Смотрим, залипает ли на конкретных участках. Если чтение “пульсирует” — скорее всего, где-то один из дисков тормозит при чтении блоков.
strace -T -e read dd if=/dev/md0 of=/dev/null bs=4M
Параметр -T покажет время, затраченное на каждый системный вызов read(). Если большинство идут быстро (<0.01s), а иногда появляются задержки в 0.2-0.5 секунды — именно в эти моменты диск фризит.
Можно сверить статистику по mdstat, а потом пойти глубже:
cat /proc/mdstat
Затем для каждого устройства в массиве:
for d in sd{a,b,c}; do echo "$d: $(cat /sys/block/$d/stat)"; done
Здесь можно отследить рост времени обработки I/O по полям в /sys/block/*/stat. Если у одного устройства счётчики существенно выше — это он и есть.
smartctl на подозреваемом диске
После того, как нашли “виновника”, имеет смысл проверить его S.M.A.R.T.:
smartctl -a /dev/sdX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4❤1
Киберугрозы не ждут. А вы?
Защити себя или свою команду от проверок и взломов — обучись защите КИИ по стандартам ФСТЭК.
До 31 мая действует спецпредложение🔥 -50% на второй курс!
Выбирай один, а второй — за полцены:
1️⃣ Техническая защита информации → 29 950 ₽
2️⃣ Безопасность персональных данных → 40 000 ₽
Записал сотрудника на курс по КИИ?
→ Получи -50% на “Защиту объектов КИИ” (всего 32 000 ₽)
👨🎓 Выпускникам Softline — скидка 40% на «Безопасность КИИ»
(149 000 → 89 400 ₽)
Почему выбирают нас:
✔ Преподаватели из ФинЦЕРТа и Банка России
✔ Программы одобрены ФСТЭК
✔ Вебинары в прямом эфире
✔ Рассрочка 0%
⏳ До 31 мая — оставь заявку и зафиксируй скидку
👉 Оставить заявку
Защити себя или свою команду от проверок и взломов — обучись защите КИИ по стандартам ФСТЭК.
До 31 мая действует спецпредложение🔥 -50% на второй курс!
Выбирай один, а второй — за полцены:
1️⃣ Техническая защита информации → 29 950 ₽
2️⃣ Безопасность персональных данных → 40 000 ₽
Записал сотрудника на курс по КИИ?
→ Получи -50% на “Защиту объектов КИИ” (всего 32 000 ₽)
👨🎓 Выпускникам Softline — скидка 40% на «Безопасность КИИ»
(149 000 → 89 400 ₽)
Почему выбирают нас:
✔ Преподаватели из ФинЦЕРТа и Банка России
✔ Программы одобрены ФСТЭК
✔ Вебинары в прямом эфире
✔ Рассрочка 0%
⏳ До 31 мая — оставь заявку и зафиксируй скидку
👉 Оставить заявку
👍2😁2❤1
Поддержка ядра Linux 6.13 завершена
Серия 6.13 официально получила статус EOL (End of Life). Последнее обновление — 6.13.12 от 20 апреля 2025.
Что делать:
— Переходите на Linux 6.14 (актуальная стабильная версия).
— Или на Linux 6.12 LTS, если нужен долгосрочный цикл поддержки (до декабря 2026).
Оставаться на EOL-ядре — значит работать без критических патчей. Особенно опасно для серверов и продакшн-сред.
LTS-ядра, которые ещё живы:
• 6.12 (до 12.2026) — Ubuntu 24.04, Oracle UEK8
• 6.6 (до 12.2026)
• 6.1 (до 12.2026) — Debian 12, OpenWRT
• 5.15 (до 10.2026) — Ubuntu 22.04, OpenWRT 23.05
• 5.10 (до 12.2026) — Debian 11, Android 12
• 5.4 (до 12.2025) — Ubuntu 20.04
Если вы используете 6.13 — самое время накатить миграционный план.
Серия 6.13 официально получила статус EOL (End of Life). Последнее обновление — 6.13.12 от 20 апреля 2025.
Дальнейших патчей, включая security-фиксы, больше не будет.
Что делать:
— Переходите на Linux 6.14 (актуальная стабильная версия).
— Или на Linux 6.12 LTS, если нужен долгосрочный цикл поддержки (до декабря 2026).
Оставаться на EOL-ядре — значит работать без критических патчей. Особенно опасно для серверов и продакшн-сред.
LTS-ядра, которые ещё живы:
• 6.12 (до 12.2026) — Ubuntu 24.04, Oracle UEK8
• 6.6 (до 12.2026)
• 6.1 (до 12.2026) — Debian 12, OpenWRT
• 5.15 (до 10.2026) — Ubuntu 22.04, OpenWRT 23.05
• 5.10 (до 12.2026) — Debian 11, Android 12
• 5.4 (до 12.2025) — Ubuntu 20.04
Если вы используете 6.13 — самое время накатить миграционный план.
👍16
Автоматизация процессов в проекте: пополните свою базу знаний и расширьте стек со скидкой до 37%
👍🏻Обучающие материалы, которые помогут вам быстро освоить CI/CD, IAC и ИБ, повысить продуктивность и оптимизировать процессы:
- Gitlab CI/CD
- CI/CD c Jenkins
- Kubernetes: мониторинг и логирование
- Terraform автоматизация
- Продвинутый PostgreSQL
- Keycloak безопасность и аутентификация
- Основы информационной безопасности
и многие другие
Все программы актуальны в 2025 году, курсы ведут практикующие спикеры.
👉Смотрите подборку и выбирайте подходящий курс со скидкой до 15000р 👉 Смотреть подборку
👍🏻Обучающие материалы, которые помогут вам быстро освоить CI/CD, IAC и ИБ, повысить продуктивность и оптимизировать процессы:
- Gitlab CI/CD
- CI/CD c Jenkins
- Kubernetes: мониторинг и логирование
- Terraform автоматизация
- Продвинутый PostgreSQL
- Keycloak безопасность и аутентификация
- Основы информационной безопасности
и многие другие
Все программы актуальны в 2025 году, курсы ведут практикующие спикеры.
👉Смотрите подборку и выбирайте подходящий курс со скидкой до 15000р 👉 Смотреть подборку
❤1👍1
OverlayFS в контейнерах: трюки с кэшем, которые экономят до 1 ГБ RAM
Контейнеры на Podman и Docker по умолчанию используют overlayfs (или overlay2), чтобы объединять базовые образы и изменения.
Что происходит
При чтении файлов из слоёв overlayfs они кэшируются в page cache как обычно.
Проблема в том, что файлы из нижнего слоя (lowerdir) часто остаются в кеше, даже если контейнер их больше не использует. Так как они общие для всех, ядро не всегда “охотно” от них избавляется.
Особенно это чувствуется, если база содержит много мелких .py или .js, которые загружаются в RAM при запуске.
Как увидеть
Можно посмотреть потребление page cache через free -h или точнее — с smem/pss:
Анализ инод и кэшированных файлов через:
Трюк с vfs_cache_pressure
Параметр vm.vfs_cache_pressure регулирует, как активно ядро освобождает inode/dentry кэш. По умолчанию он равен 100.
Если снизить его до 50 или ниже, кэш файловых метаданных будет дольше жить, но для overlayfs иногда, наоборот, помогает поднятие этого значения:
Это форсирует ядро очищать page cache агрессивнее — и иногда экономит сотни мегабайт на инстанс с десятками контейнеров.
Альтернативы
• В Kubernetes: использовать emptyDir с medium: Memory для временных кэшей, которые не должны попадать в overlay.
• В Docker: периодически вызывать docker system prune или использовать --read-only rootfs, чтобы предотвратить накопление временных данных.
Контейнеры на Podman и Docker по умолчанию используют overlayfs (или overlay2), чтобы объединять базовые образы и изменения.
Это удобно, но иногда приводит к неожиданным утечкам памяти — особенно в системах с небольшим объёмом ОЗУ или множеством контейнеров.
Что происходит
При чтении файлов из слоёв overlayfs они кэшируются в page cache как обычно.
Проблема в том, что файлы из нижнего слоя (lowerdir) часто остаются в кеше, даже если контейнер их больше не использует. Так как они общие для всех, ядро не всегда “охотно” от них избавляется.
Особенно это чувствуется, если база содержит много мелких .py или .js, которые загружаются в RAM при запуске.
Как увидеть
Можно посмотреть потребление page cache через free -h или точнее — с smem/pss:
cat /proc/meminfo | grep -i cache
Анализ инод и кэшированных файлов через:
find /proc/*/fd -lname "/overlay/*" | wc -l
Трюк с vfs_cache_pressure
Параметр vm.vfs_cache_pressure регулирует, как активно ядро освобождает inode/dentry кэш. По умолчанию он равен 100.
Если снизить его до 50 или ниже, кэш файловых метаданных будет дольше жить, но для overlayfs иногда, наоборот, помогает поднятие этого значения:
sysctl -w vm.vfs_cache_pressure=200
Это форсирует ядро очищать page cache агрессивнее — и иногда экономит сотни мегабайт на инстанс с десятками контейнеров.
Альтернативы
• В Kubernetes: использовать emptyDir с medium: Memory для временных кэшей, которые не должны попадать в overlay.
• В Docker: периодически вызывать docker system prune или использовать --read-only rootfs, чтобы предотвратить накопление временных данных.
👍8
🔥 ОТ ДЖУНА ДО СЕНЬЁРА ЗА 2 ГОДА — МОЙ ПУТЬ В IT.
Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.
💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.
На канале я делюсь всем этим опытом:
▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.
▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.
▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.
Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.
Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.
💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.
На канале я делюсь всем этим опытом:
▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.
▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.
▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.
Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.
Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
🤣14😁1