Comments 17
И... пропустив нудный процесс дознания с пристрастием
а вот я бы с удовольствием почитал именно про этот нудный процесс, это ничуть не менее интересно готовых результатов расследования.
Вообще, если там systemd, и он рулит tmpfs (для этого сервис отдельный вроде бы есть), то очень похоже на баг в этом самом systemd.
Это я так замылил тот факт, что буквально случайно проверяя свободные диски командой df я зацепился взглядом за размер /run и нехилый такой объем занятого пространства на нем. Ну а описывать всю размотку с копанием док, постами на форуме проксмокса и заведением бага в их багзиллу - такое себе удовольствие что писать что читать. А там уже Фабиан из Проксмокса мне немного мозги вставил и осталось докопать детали.
systemd рулит всеми монтированиями, да, но! Все что связано с ApiVFS - /proc, /dev, /sys, /run - оно не в systemd-mount, а на самой ранней стадии старта делается и захардкожено. Потому что без /run он вообще не может работать.
А дальше дело в том, что захардкожено примерно mount -t tmpfs none /run и там нет опции size (можно посмотреть в исходниках systemd), что логично. А кернел ничего не знает про cgroup вызывающего mount процесса и отдает дефолт на полпамяти.
Это не баг, это behaviour by desighn для каждой из частей, совершенно корректное по отдельности, просто именно в случае LXC с определенной комбинацией параметров это вызывает вот такие побочки.
Кароч, просто надо держать в голове что такая шляпа возможна. И можно дунуть в любой по дефолту созданный tmpfs больше, чем ограничение cgroup, что моментально вызовет смерть контейнера по OOM.
Кажется, что если уж от захардкоженного монтирования не обойтись, то надо в каком-то сервисе перемонтировать с size, с учетом ограничений, пока оно ещë не заполнено чем-то.
все вместе образующие ни много ни мало как оператора связи - с 2G и 4G сотовой связью, публичным вайфаем, проводными клиентами, биллингом, порталами и прочим обвесом.
А как называется оператор связи? Он самостоятельный или виртуальный оператор связи (MVNO)? Мелкие игроки вряд ли могут потянуть покупку лицензий на 4G.
Полноценный оператор с вышками, базовыми станциями, антеннами, интерконнектом и к тому же член GSMA.
Это не в России, а на далеких тропических островах, Палау называется. Там вся местная администрация отрасли связи - это огромной ширины мужчина, которому эту функцию вручили помимо всяких других обязанностей ))))) Он и конкурсы проводит, и разрешения частотные выдает, и в ITU числится главным одним за все )))))
Если представите себе поселок городского типа на 20 тыс населения вокруг которого на примерно тысячу километров - Тихий океан, то сразу придет понимание о простоте тамошних нравов )))))
Ну а так-то полноценное государство, даже член ООН.
Это не в России, а на далеких тропических островах, Палау называется.
Понятно. Просто у вас в профиле указано "Москва, Москва и Московская обл., Россия", поэтому я удивился, что есть какой-то мелкий сотовый оператор с 4G, особенно учитывая, какое там "рубилово" было при распределении частот для 4G в России.
Времена идут, отношения остаются. Мир нынче штука глобальная невзирая на нюансы географии и момента.
Про рубилово по частотам - ну, такое. Какое рубилово, а? Всем кому нужно дать - дали. Пропорционально весу (не спрашивайте!). А про 30 МГц "цифрового дивиденда", поделенного на четыре мне потом пришлось с легким стыдом объяснять зарубежным коллегам, интересующимся что это вообще за хрень была, - что иногда вот надо поделить 30 именно на четыре. Потому что надо. Надо и все тут. Что характерно - они поняли.
Мемуары про лютое веселье на т.н. консультациях с операторами, которые демократично проводило по этому Минсвязи я было начал писать - а потом забил. Ибо не только лишь все способны оценить юмор этой ситуации. Мне и Сорокиной (Теле2) было весело, остальные делали сложные лица )))))))
Интересный пост. Наконец-то раскрыта тайна почему контейнеры в LXC падали.
Это относится к контейнерам запущенным из официальных шаблонов Proxmox?
Хороший вопрос! Потому что да, у меня там весьма нестандартное для проксмокса крутится.
В части создания tmpfs с размером в половину физической памяти - да. Более того, это будет относиться и к LXC вне Proxmox. Потому что тупо нет разумного способа это предотвратить. Тикет в багзилле проксмокса в итоге был подвешен с формулировкой "может че-то со временем изменится или кто-то предложит хорошее решение"
В части как через это systemd выжирает память - надо смотреть. Если конфигурация journald в дефолте (т.е. все опции закомментированы), и нет каталога /var/log/journal
, то да. Если journald сконфигурирован не писать бесконечно в /run - то нет.
Проверять все, честно говоря, нет ни времени ни желания, извините. В любом случае зарубка на память не повредит. И мониторинг! ;)
Отличный слог. Спасибо.
Спасибо за статью.
P.s. Правильнее будет не трогать системный файл journald.conf и рисовать свои параметры, напр., в /etc/systemd/journald.conf.d/override.conf
У меня вот так:
cat <<EOF > /etc/systemd/journald.conf.d/override.conf
[Journal]
# Store on disk
Storage=persistent
# Don't split Journald logs by user
SplitMode=none
# Disable rate limits
RateLimitInterval=0
RateLimitIntervalSec=0
RateLimitBurst=0
# Disable Journald forwarding to syslog
ForwardToSyslog=no
# Journald forwarding to wall /var/log/kern.log
ForwardToWall=yes
# Disable signing of the logs, save cpu resources.
Seal=no
Compress=yes
# Fix the log size
SystemMaxUse=64M
RuntimeMaxUse=60M
# Optimise the logging and speed up tasks
MaxLevelStore=warning
MaxLevelSyslog=warning
MaxLevelKMsg=warning
MaxLevelConsole=notice
MaxLevelWall=crit
EOF
systemctl force-reload systemd-journald
Насколько понял в контейнере запущен journald для сборки логов.
Не совсем ясно как это обосновано, почему stderr и stdout не подходят?
LXC теряли память и падали. И при чем же здесь tmpfs и journald?