Что делает параметр fs.protected_hardlinks = 1 в sysctl?
Anonymous Quiz
28%
Запрещает создание всех жёстких ссылок
16%
Разрешает создавать жёсткие ссылки только на исполняемые файлы
35%
Защищает от атак повышения привилегий через жёсткие ссылки
21%
Блокирует жёсткие ссылки на файлы владельца root
👍12❤1
HIGGS — новый open-source метод сжатия LLM от Яндекса и научных партнёров
Исследователи из Yandex Research, ВШЭ, MIT, KAUST и ISTA представили HIGGS — способ квантизации больших языковых моделей без потери качества.
Метод уже доказал свою эффективность на DeepSeek R1 (671B параметров) и Llama 4 Maverick (400B), позволяя запускать их на более доступных устройствах.
Что делает HIGGS:
⏺ Уменьшает размер модели без дообучения
⏺ Работает даже без доступа к обучающим данным
⏺ Лучше GPTQ и AWQ в диапазоне 2–4 бит
⏺ Уже проверен на Llama 3, Llama 4, Qwen2.5
Доступно на:
• GitHub
• Hugging Face
• arXiv (научная статья принята на NAACL 2025)
HIGGS делает LLM доступнее не только для корпораций, но и для независимых разработчиков и лабораторий.
Исследователи из Yandex Research, ВШЭ, MIT, KAUST и ISTA представили HIGGS — способ квантизации больших языковых моделей без потери качества.
Метод уже доказал свою эффективность на DeepSeek R1 (671B параметров) и Llama 4 Maverick (400B), позволяя запускать их на более доступных устройствах.
Что делает HIGGS:
Доступно на:
• GitHub
• Hugging Face
• arXiv (научная статья принята на NAACL 2025)
HIGGS делает LLM доступнее не только для корпораций, но и для независимых разработчиков и лабораторий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
tmpfs и zram: ускоряем систему или забиваем оперативку впустую?
RAM-диски — это круто, пока они не начинают мешать.
tmpfs и zram дают разные преимущества, и использовать их надо с пониманием.
tmpfs: максимально быстро, но без компромиссов
Пишет напрямую в оперативную память. Отлично подходит для:
– /tmp на десктопе
– Сборок в CI
– Хранения промежуточных логов, сокетов, lock-файлов
Монтирование:
Или прописать в fstab:
Ошибка №1: tmpfs в /tmp на 512M в системе с 1ГБ RAM — и скрипт сборки падает с ENOSPC. Лучше:
zram: компромиссы — компрессией
Создаёт блочное устройство в RAM с on-the-fly сжатием. Применяется:
– Как swap на слабых системах
– Для кэша journald
– Для контейнеров в Kubernetes с ограниченной RAM
Пример настройки swap:
Плюсы:
– Можно выжать до 2–2.5x RAM (особенно с текстовыми данными)
– Не убивает SSD
– Работает с приоритетом (можно сделать swapfile + zram)
Ошибка №2: Использовать zram как swap на сервере с heavy-load БД. Это не замена оперативке, это аварийный буфер.
Компрессия имеет цену
Для более точной настройки swap с zram — используйте systemd-zram-generator или zram-tools.
Пример конфига для zram-generator.conf:
RAM-диски — это круто, пока они не начинают мешать.
tmpfs и zram дают разные преимущества, и использовать их надо с пониманием.
tmpfs: максимально быстро, но без компромиссов
Пишет напрямую в оперативную память. Отлично подходит для:
– /tmp на десктопе
– Сборок в CI
– Хранения промежуточных логов, сокетов, lock-файлов
Монтирование:
mount -t tmpfs -o size=256M tmpfs /tmpfs
Или прописать в fstab:
tmpfs /var/cache/build tmpfs size=1G,mode=1777 0 0
Ошибка №1: tmpfs в /tmp на 512M в системе с 1ГБ RAM — и скрипт сборки падает с ENOSPC. Лучше:
mount -t tmpfs -o size=50% tmpfs /tmp
zram: компромиссы — компрессией
Создаёт блочное устройство в RAM с on-the-fly сжатием. Применяется:
– Как swap на слабых системах
– Для кэша journald
– Для контейнеров в Kubernetes с ограниченной RAM
Пример настройки swap:
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
Плюсы:
– Можно выжать до 2–2.5x RAM (особенно с текстовыми данными)
– Не убивает SSD
– Работает с приоритетом (можно сделать swapfile + zram)
Ошибка №2: Использовать zram как swap на сервере с heavy-load БД. Это не замена оперативке, это аварийный буфер.
Компрессия имеет цену
Для более точной настройки swap с zram — используйте systemd-zram-generator или zram-tools.
Пример конфига для zram-generator.conf:
[zram0]
zram-size = ram / 3
compression-algorithm = zstd
swap-priority = 100
👍11
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
Основные возможности:
— Сохранение состояния памяти, сокетов, дескрипторов, PID и даже TCP-соединений.
— Используется в live-миграции контейнеров (например, в Docker и LXC).
— Полезен для отказоустойчивости, быстрого запуска сервисов и отладки.
Пример:
criu dump -t <pid> --images-dir /tmp/checkpoint
criu restore --images-dir /tmp/checkpoint
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥2
Мониторинг сети с помощью sFlow
sFlow — это протокол мониторинга сети, который позволяет администраторам получать выборочные данные о трафике в реальном времени.
Его основное преимущество — минимальная нагрузка на устройство благодаря выборочному сбору данных.
Как работает sFlow
• Агент sFlow: встроен в сетевое устройство и собирает выборки пакетов.
• Коллектор: сервер, принимающий выборки и анализирующий данные.
• Выборки: небольшие фрагменты трафика передаются на коллектор для анализа.
Настройка sFlow на коммутаторе
1️⃣ Включение агента sFlow
На устройствах Cisco:
На устройствах HPE/Aruba:
2️⃣ Настройка параметров
Cisco: Установите IP-адрес агента (IP устройства):
Укажите частоту выборок:
Настройте интервал опроса счётчиков:
Укажите IP и порт коллектора:
3️⃣ Проверка и мониторинг
Проверьте текущую конфигурацию:
На HPE:
Убедитесь, что данные отправляются на коллектор. Для анализа можно использовать инструменты, такие как sFlowTrend или ntopng.
sFlow — это протокол мониторинга сети, который позволяет администраторам получать выборочные данные о трафике в реальном времени.
Его основное преимущество — минимальная нагрузка на устройство благодаря выборочному сбору данных.
Как работает sFlow
• Агент sFlow: встроен в сетевое устройство и собирает выборки пакетов.
• Коллектор: сервер, принимающий выборки и анализирующий данные.
• Выборки: небольшие фрагменты трафика передаются на коллектор для анализа.
Настройка sFlow на коммутаторе
На устройствах Cisco:
sflow enable
На устройствах HPE/Aruba:
sflow 1 sampling 1000
sflow 1 destination 192.168.1.2 6343
Cisco: Установите IP-адрес агента (IP устройства):
sflow agent-ip 192.168.1.1
Укажите частоту выборок:
sflow sampling-rate 1000
Настройте интервал опроса счётчиков:
sflow polling-interval 30
Укажите IP и порт коллектора:
sflow collector-ip 192.168.1.2 6343
Проверьте текущую конфигурацию:
show sflow
На HPE:
show sflow agent
Убедитесь, что данные отправляются на коллектор. Для анализа можно использовать инструменты, такие как sFlowTrend или ntopng.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🔥 ОТ ДЖУНА ДО СЕНЬЁРА ЗА 2 ГОДА — МОЙ ПУТЬ В IT.
Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.
💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.
На канале я делюсь всем этим опытом:
▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.
▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.
▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.
Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.
Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.
💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.
На канале я делюсь всем этим опытом:
▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.
▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.
▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.
Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.
Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
👎9❤2👍2🔥1🌭1
Какой из параметров ядра отвечает за включение защиты от Spectre v2?
Anonymous Quiz
10%
noexec=on
38%
spec_store_bypass_disable=on
42%
nospectre_v2
10%
mitigations=auto
👍9
Angie 1.9.0 — форк Nginx от бывших разработчиков, теперь с 0-RTT и новым кэшем
Проект развивается как форк Nginx, уже получил сертификаты совместимости с российскими ОС и включён в реестр отечественного ПО. Angie распространяется по BSD-лицензии и активно развивается.
Что нового в Angie 1.9.0:
• proxy_cache_path теперь сохраняет индекс кэша между перезапусками — ускоряет восстановление.
• Поддержка ssl_early_data (0-RTT) в stream — клиент может слать данные до завершения TLS-рукопожатия.
• В acme_hook появился параметр uri= — можно переопределять путь до обработчика.
• В acme_client:
— renew_on_load — обновляет сертификат при перезагрузке конфига;
— enabled=off отключает обновление, но переменные остаются.
Вышел релиз Angie 1.9.0 — веб-сервера от команды бывших разработчиков Nginx и FreeBSD.
Проект развивается как форк Nginx, уже получил сертификаты совместимости с российскими ОС и включён в реестр отечественного ПО. Angie распространяется по BSD-лицензии и активно развивается.
Что нового в Angie 1.9.0:
• proxy_cache_path теперь сохраняет индекс кэша между перезапусками — ускоряет восстановление.
• Поддержка ssl_early_data (0-RTT) в stream — клиент может слать данные до завершения TLS-рукопожатия.
• В acme_hook появился параметр uri= — можно переопределять путь до обработчика.
• В acme_client:
— renew_on_load — обновляет сертификат при перезагрузке конфига;
— enabled=off отключает обновление, но переменные остаются.
👍16
Swap-файл vs swap-раздел: как влияет на SSD и работу в системах с малым ОЗУ
На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.
Что выбрать — swap-файл или swap-раздел?
Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
⏺ менять его размер сложно (особенно без LVM);
⏺ требует переформатирования или изменения разметки;
⏺ неудобен в облаках и на VPS.
Swap-файл — более гибкий и удобный. Особенно если:
⏺ вы работаете на облаке с единственным диском;
⏺ у вас ограниченное место;
⏺ нужно быстро изменить размер или выключить swap.
На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.
Как правильно создать swap-файл
Не используйте dd — он может создать фрагментированный файл:
Вместо этого:
В fstab:
Дополнительные улучшения: zswap и zram
Чтобы продлить срок службы SSD и ускорить работу на слабых системах:
Zswap — сжатая подкачка в RAM. Включается одной командой:
Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:
Настройка поведения подкачки
Чтобы система не бросалась в swap при любой нагрузке:
10–20 — хороший баланс: сначала используется RAM, и только потом swap.
На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.
Но что выбрать: swap-файл или swap-раздел? И главное — как сделать, чтобы не угробить SSD и не словить тормоза?
Что выбрать — swap-файл или swap-раздел?
Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
Swap-файл — более гибкий и удобный. Особенно если:
На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.
Как правильно создать swap-файл
Не используйте dd — он может создать фрагментированный файл:
# Плохо:
dd if=/dev/zero of=/swapfile bs=1M count=1024
Вместо этого:
# Хорошо:
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
В fstab:
/swapfile none swap sw 0 0
Дополнительные улучшения: zswap и zram
Чтобы продлить срок службы SSD и ускорить работу на слабых системах:
Zswap — сжатая подкачка в RAM. Включается одной командой:
echo 1 > /sys/module/zswap/parameters/enabled
Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 512M > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
Настройка поведения подкачки
Чтобы система не бросалась в swap при любой нагрузке:
sysctl vm.swappiness=10
10–20 — хороший баланс: сначала используется RAM, и только потом swap.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥2
Почему apt не чистит /var/cache/apt — и как это может убить ваш контейнер
На голом Ubuntu-бейзовом контейнере вы устанавливаете пару пакетов, а потом обнаруживаете, что образ раздулся на сотни мегабайт.
Причина почти всегда одна — автоматический кэш deb-пакетов, который apt сохраняет в /var/cache/apt/archives, но не торопится удалять.
Что происходит
При установке пакета:
apt скачивает .deb в /var/cache/apt/archives, а потом уже ставит. Но не удаляет их, если вы явно не вызвали:
или
Во многих минималистичных контейнерных сборках вы этого не делаете — и копите десятки мегабайт мусора при каждом apt install.
Почему это критично в контейнерах
⏺ Образы раздуваются — и занимают в 2–3 раза больше места, чем нужно.
⏺ Файловая система в overlayfs не освобождается даже если удалить файл вручную позже. Он всё равно останется в нижнем слое.
⏺ Контейнеры могут падать из-за переполнения ограниченного volume или rootfs (особенно в CI/CD).
Как это чинить правильно
Перед завершением сборки — чистите кэш:
или в Dockerfile:
Трюк с overlayfs
Если вы уже создали контейнер, в котором /var/cache/apt раздулся, а чистка не помогает — потому что это уже лежит в нижнем readonly-слое — можно:
1️⃣ Использовать docker export / import — сохранит только активный слой.
2️⃣ Пересобрать образ с clean’ом до commit.
3️⃣ Смонтировать внешний tmpfs в /var/cache/apt в рантайме:
На голом Ubuntu-бейзовом контейнере вы устанавливаете пару пакетов, а потом обнаруживаете, что образ раздулся на сотни мегабайт.
Причина почти всегда одна — автоматический кэш deb-пакетов, который apt сохраняет в /var/cache/apt/archives, но не торопится удалять.
Что происходит
При установке пакета:
apt install nginx
apt скачивает .deb в /var/cache/apt/archives, а потом уже ставит. Но не удаляет их, если вы явно не вызвали:
apt clean
или
apt autoclean
Во многих минималистичных контейнерных сборках вы этого не делаете — и копите десятки мегабайт мусора при каждом apt install.
Почему это критично в контейнерах
Как это чинить правильно
Перед завершением сборки — чистите кэш:
apt-get clean
rm -rf /var/lib/apt/lists/*
или в Dockerfile:
RUN apt update && apt install -y \
curl \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
Трюк с overlayfs
Если вы уже создали контейнер, в котором /var/cache/apt раздулся, а чистка не помогает — потому что это уже лежит в нижнем readonly-слое — можно:
mount -t tmpfs -o size=100m tmpfs /var/cache/apt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2🔥2
Тратите много времени на повторяющиеся 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