LINUX.ORG.RU
ФорумTalks

Systemd убивает Postgresql, ест детей и взрывает IPC

 , , ,


1

3

tl;dr - на Ubuntu 16.04 если вы не подшаманите logind.conf, ssh в пользователя 'postgres' убьет базу данных.

https://lists.freedesktop.org/archives/systemd-devel/2014-April/018373.html

Каменты жгут, я переведу только оппост для Ъ:

В Systemd 212 новые дефолты удаляют IPC (включая память SYSV), когда пользователь «полностью» вылогинивается. Яко опция RemoveIPC=yes

Т.е. сервис postgresql service - не логин, если вы ssh'итесь в постгрес (например чтобы rsync'нуть wal файлы) и потом вылогиниваетесь, Systemd удоляет всю постгресовскую SYSV память, шта тут же приводит к чудным ошибкам типа:

FATAL:  semop(id=92307463) failed: Invalid argument
CONTEXT:  xlog redo insert: rel 1663/16414/112697213; tid 1319269/129
LOG:  background writer process (PID 24589) exited with exit code 1
LOG:  terminating any other active server processes
LOG:  all server processes terminated; reinitializing
LOG:  semctl(119406593, 0, IPC_RMID, ...) failed: Invalid argument

Приходит на ум простейший фикс на postgresql.service:

PAMname=systemd-login

Но сие не выйдет по двум причинам: 1) оно не подхватывается logind (в логах не появляется ничего типа «Started User Manager for UID 88», как это происходит при заходе по ssh) 2) как только pg_ctl останавливается, сессия закрывается. (pg_ctl запускает postgres в фоне)

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от intelfx

Из-за того, что tmux демонизируется по-юниксовому, а из сессионной цгруппы не выходит. Раньше это работало, а потом в systemd решили прибивать сессионную цгруппу при завершении сессии.

Прошу прощения, я только что из криокамеры. Зачем вообще кому-то понадобилось автоматически убивать процессы при логауте? Я вижу только очень узкие применения вроде интернет-кафе, но там, насколько мне известно, принято разворачивать в памяти отдельный образ для каждого пользователя.

Jini ★★
()
Ответ на: комментарий от Jini

Зачем вообще кому-то понадобилось автоматически убивать процессы при логауте?

Затем же зачем автоматически перезапускать глючный упавший демон вместо того чтобы решать почему он упал - поттер пофиг style.

quest ★★★★
()
Ответ на: комментарий от Shadow

я, как инженер, радикально против такого говнобизнеса. нормальные уважающие себя и своих клиентов компании производят качественное оборудование и софт. это в нашей стране дураков быстрая маржа на перепродажах привлекает некоторых дельцов. и они воображают, что и в реальном бизнесе такой же подход: наговнил, впарил покупателям, и слился, чтобы никакой ответственности. но это не то, на что нужно равняться.

Iron_Bug ★★★★★
()
Ответ на: комментарий от intelfx

есть основополагающая идея о том, что системы должны зависеть только от интерфейсов/контрактов, но не от реализации этих контрактов. Это нужно для того, чтобы реализацию контракта можно было мгновенно заменить на что угодно, так что пользователи контракта этого не заметят.

из этого напрямую следует что tmux не может зависеть от systemd. Он может зависеть только от стандарта, стандартизованного апи (например, апи ядра), одна из реализаций которго является systemd

вопрос: предложенное решение по перепиливания tmux реализует данную схему? Или предполагается гвоздями прибить tmux к systemd и определенной архитектуре системы?

если ответ «прибить гвоздями» - а если tmux будет запускаться на системе без systemd, или вообще с какой-то совершенно другой архитектурой, как предполагается решать эту архитектурную проблему?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

а если tmux будет запускаться на системе без systemd

поттера ответ: систем без systemd не должно существовать

quest ★★★★
()
Ответ на: комментарий от Shadow

systemd умрет и будет выпилен, но перед смертью софта постарается поломать как можно больше

quest ★★★★
()
Ответ на: комментарий от stevejobs

Да, реализует. Нет, прибивать гвоздями не предполагается. Интерфейс называется «PAM».

P. S.: Что понимается под «архитектурой»?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от Jini

Во-первых, чтобы перелогин приводил к возвращению системы в предсказуемое состояние, вне зависимости от того, что было сделано во время сессии (т. е. ради удобства). Во-вторых, чтобы жёстко обозначить время жизни ресурсов, связанных с сессией, и таким образом не допускать возникновения своеобразного эквивалента «use-after-free» на общесистемном уровне.

intelfx ★★★★★
()
Ответ на: комментарий от Shadow

1. daemon(3) юзали далеко не все. Многие писали свой daemon() на сырых сисколлах.

2. менять семантику daemon(3), вообще-то, будет похуже. Даже если закрыть глаза на существование пункта 1.

3. Прочитай ещё раз мои слова про PAM. У меня, например, используется pam_mount, pam_ssh и ещё много чего (в т. ч. самописное), которое внутри себя использует reference counting открытых сессий. Если tmux будет демонизироваться в обход PAM, при моём последнем разлогине это всё радостно исчезнет.

Поэтому я категорически не приемлю твоё предложение и категорически рад тому, что в разработке юзерспейса, которым я пользуюсь, принимаешь участие не ты, а Леннарт и компания.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Если этот юзкейс встречается только при работе с одной программой — то он уже странный.

NB: стабильные и нестабильные релизы существуют не просто так. blablabla прости blablabla дефолты подходят не всем... blablabla.

Я понимаю, тут тебя все с говном смешивают и читать тред внимательно просто некогда. Стивжобс кидал ссылку, из которой очевидно, что баг имеет место на самом стейбл при стейблов, на Red Hat, который собсно эту всю тему и двигает. В продакшене. Он имеет место не с одной программой, как тебе показалось.

The default RemoveIPC setting crashes asm, databases, and any application that uses a Shared Memory Segment (SHM) (Doc ID 2082270.1)

Видишь any? Это в том числе и Oracle database.

А теперь, когда ты в очередной раз решишь сказать «ну и что, подумаешь, blablabla». Я тебе хочу сказать, что systemd сам по себе яйца выеденного не стоит. Он нужен для обслуживания прикладного ПО. Из-за этого вообще все и делают. Одна из основных ролей RHEL - это пускалка БД. И если кому-то кажется, что дело в Gnome Desktop или в самом systemd, то этому кому-то стоит всерьез заняться переоценкой.

crypt ★★★★★
()
Ответ на: комментарий от crypt

The default RemoveIPC setting crashes asm, databases, and any application that uses a Shared Memory Segment (SHM) (Doc ID 2082270.1)

Что, «any application» тоже требует логиниться под тем же юзером, под которым запущен демон?

баг имеет место на самом стейбл при стейблов, на Red Hat, который собсно эту всю тему и двигает. В продакшене.

В таком случае мейнтейнеры RHEL облажались.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Чувак, а ты какой дистр используешь? Где sd приготовлен лучше всего?
Я тут на арч на днях мигрировал, тут на него всё завязано, деваться некуда, пора осваивать.

Hertz ★★★★★
()
Ответ на: комментарий от crypt

Не выставили эту настройку в «no» по умолчанию || не черри-пикнули из апстрима исправление, которое игнорирует RemoveIPC= для пользователей с UID < UID_MIN.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Hertz

У меня арч. С поддержкой тут всё хорошо: важные исправления черри-пикают, юниты чистые, изкоробочные дефолты работают. Но, как и всё остальное в арче, предполагается, что пользователь приготовит всё недостающее себе сам.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Что, «any application» тоже требует логиниться под тем же юзером, под которым запущен демон?

Вот смотри, ты этого на самом деле не знаешь. LP, очевидно, тоже. Вопрос, какое право кто-то из вас имеет называть какой-то workflow «странным» или менять его на свое усмотрение? Если вы этого не знаете, то очевидно не являетесь linux guru. Стоит ли кому-то из вас, грубо говоря, давать права на unlink().

crypt ★★★★★
()
Ответ на: комментарий от intelfx

из апстрима исправление, которое игнорирует RemoveIPC= для пользователей с UID < UID_MIN.

давай тогда вернемся к системе релизов systemd. взяли unstable release? нет. значит, stable release содержал баг?

crypt ★★★★★
()
Ответ на: комментарий от crypt

Вопрос, какое право кто-то из вас имеет называть какой-то workflow «странным» или менять его на свое усмотрение?

Не меньшее, чем любой другой человек.

Если вы этого не знаете, то очевидно не являетесь linux guru. Стоит ли кому-то из вас, грубо говоря, давать права на unlink().

А кто вообще удовлетворяет твоему личному определению «linux guru»?

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Не выставили эту настройку в «no» по умолчанию || не черри-пикнули из апстрима исправление, которое игнорирует RemoveIPC= для пользователей с UID < UID_MIN.

я говорю, ты не ходил по ссылку. они выставили настройку в no.

crypt ★★★★★
()
Ответ на: комментарий от crypt

взяли unstable release? нет.

Да. В systemd нет stable-релизов. Точнее, были, но кросс-дистрибутивная команда стабилизаторов в конце концов разбежалась со словами «лучше мы будем поддерживать свои отдельные stable-ветки в дистрибутивах».

intelfx ★★★★★
()
Ответ на: комментарий от crypt

Тогда вот это утверждение

баг имеет место на самом стейбл при стейблов, на Red Hat, который собсно эту всю тему и двигает. В продакшене.

ложно (а я тебе поверил). Какие тогда вообще претензии к кому-либо?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 4)
Ответ на: комментарий от intelfx

Вопрос, какое право кто-то из вас имеет называть какой-то workflow «странным» или менять его на свое усмотрение?

Не меньшее, чем любой другой человек.

Пустышка это. Пустой трындеж и ложное самомнение. Д'Артаньян, короче.

crypt ★★★★★
()
Ответ на: комментарий от stevejobs

Ifdef Linux :( В розовом мире Лёни есть только линукс. Хотя, может, еще винду признает, хз.

leave ★★★★★
()
Ответ на: комментарий от intelfx

Да, реализует. Нет, прибивать гвоздями не предполагается. Интерфейс называется «PAM».

ничего не знаю о вашем мире, придется просто поверить :)

P. S.: Что понимается под «архитектурой»?

ну, например может быть другое ядро, не GNU\Linux, а GNU\Windows, или там Debian GNU/kFreeBSD, или OSX, или Solaris, или вообще что-то свое неведомое. (tmux есть на них на всех)

в рамках GNU/Linux может быть всякое разное. Разные системы инициализации, разные иниты и логины, может не быть PAM наверное, и так далее. Разные приложения могут хотеть разные модели управления памятью (например, кто-то хочет persistent память чуть ли не на жесткий диск, кому-то общая между разными пользователями, кому-то нужна локально-транзакционная)

может быть не локальный клиент, а тонкий клиент с пробросом графического протокола, или тонкий клиент с пробросом только картинки формирующейся на сервере, и если дело происходит на сервере - куча разных вариантов (включая tmux)

короче, быть может совершенно все что угодно, и соответственно базовая система должна быть сдизайнена очень очень очень круто, чтобы адаптироваться к любым архитектурным идеям

я немножко пилю фреймворки на джаве и у меня это чуть ли не основная проблема Жизни И Всего. Сделать правильные ортогональные контракты - это реальный рисеч, а описание их на бумаге в виде стандартов - работа на многие месяцы даже если ты стандартизуешь какую-то фитюльку.

а как сделать такую систему для мира opensource, со всей его безумной бесконечной глубиной и сложностью вариантов, я вообще хз. И поэтому преклоняюсь перед людьми, которые могут замутить такой фантастический рисеч

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от intelfx

Какие тогда вообще претензии к кому-либо?
На несодержательный вопрос нельзя дать содержательный ответ.

Содержание есть, просто неудобно признать, что твой кумир, революционер и строитель «нового мира» не вполне компетентный прогер. Что допустил нубский ляп (с родни тому, когда кто-то удаляет файл swap'a, не зная, зачем он нужен), что на конфах линукс гуру (разработчики ядра) только молча пожимают плечами, когда он выступает и предлагает свои «улучшения» в ядре. Ему просто не хватает еще 10 лет релевантного опыта.

Все это просто неудобно замечать. Тебе там уже выше писали про росу, тебе не понравилось.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от stevejobs

а как сделать такую систему для мира opensource, со всей его безумной бесконечной глубиной и сложностью вариантов, я вообще хз.

Это должна быть разработки по модели собора, одной компанией. А с опенсорсом тогда уж лучше идея с маленькими программками, которые подчиняются POSIX и делают только свою работу. Допустим, Поттеринг прав и надо все переделать. Он берет на себя роль строителя собора, наводит (на свое усмотрение) порядок в Linux, но увеличивает разрыв с POSIX и UNIX.

crypt ★★★★★
()
Ответ на: комментарий от crypt

я сам такой, то-же наивно считаю что можно все объяснить. видимо не все и не всем, например у некоторых просто больные мозги.

quest ★★★★
()
Ответ на: комментарий от stevejobs

а как сделать такую систему для мира opensource, со всей его безумной бесконечной глубиной и сложностью вариантов, я вообще хз. И поэтому преклоняюсь перед людьми, которые могут замутить такой фантастический рисеч

а мне на солярисе подход понравился. сделали 10 лет назад свой маленький инит, чтобы выполняло ровно то, что требуется в продакшене. ничего при этом не ломали, не переписывали POSIX, не учили жить других (tmux должен запускаться из PAM!).

crypt ★★★★★
()
Ответ на: комментарий от crypt

Это должна быть разработки по модели собора, одной компанией.

можно собрать круглый стол из представителей крупнейших интеграторов и разработчиков open source, чтобы они вместе писали стандарты. И потом соответственно разные компании могли предлагать свои реализации этих заранее хорошо написанных стандартов, а члены совета предоставляли бы референсные реализации. Причем фича для принятия должна быть поддержана как минимум двумя референсными реализациями (чтобы была конкуренция на уровне реализации, а не стандарта). Ну, как с джавой, C++, браузерами, и так далее.

но важно, что это должны быть стандарты на элементы конструкции, а не на общую архитектуру. Если будет общая архитектура - получится винда. А нам нужно гибкий конструктор, который можно собирать как хочешь под задачу.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от crypt

Я же сказал: были. Потом их перестали делать. И это stable-ветки, а не релизы.

P. S.: чего тебе надо? что ты хочешь оспорить?

intelfx ★★★★★
()
Ответ на: комментарий от crypt

Вот эту вот всю субъективную отсебятину ты волен писать сколько угодно, да, но она бессодержательна. Ошибки бывают у всех. А, и да, приведи определение нубского ляпа, что ли.

P. S.: Я, кажется, понял. Не ошибается тот, кто ничего не делает. А особенно самоуверенные и недалёкие из них ещё и обвиняют тех, кто что-то делает.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от crypt

линукс гуру (разработчики ядра) молча пожимают плечами, когда он предлагает свои «улучшения» в ядре

Вона как, оказывается.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Да все нормально, добавить пам - дело 15 минут.

Shadow ★★★★★
()
Ответ на: комментарий от stevejobs

ой, вот про это все не знаю, я не прогер. а вот про то, что обновить (не написать!) POSIX так и не смогли всем миром знаю. думаю, никому этот стол не нужен, пока каждый может выпускать свой продукт.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от leave

Но с такими ошибками не надо говорить, что твой продукт готов и выпускать релизы.

это походу спор админов с программистами. программисты решили осчастливить админов и научить их жить. не знаю, как еще описать эту разницу.

intelfx:
Я же сказал: [stable релизы] были. Потом их перестали делать. И это stable-ветки, а не релизы.

Вот такая вот ахинея.:) Самое забавное, что мне где-то попалось, что Поттеринг примерно также считает.:)

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от intelfx

О, собрат арчевод. А ты используешь systemd-boot или grub?
Я при установке так и не смог сладить с sd-boot, он работает
конечно, но не подхватывает ядро и в uefi-загрузчике пусто.
Только пункт с uefi-shell. Плюнул да поставил grub.

Hertz ★★★★★
()
Ответ на: комментарий от Jini

Прошу прощения, я только что из криокамеры. Зачем вообще кому-то понадобилось автоматически убивать процессы при логауте? Я вижу только очень узкие применения вроде интернет-кафе, но там, насколько мне известно, принято разворачивать в памяти отдельный образ для каждого пользователя.

Выше почитай. Гном после себя оставлял мусор в виде запущенных процессов. Баг решили исправить вот таким оригинальным образом внутри системг.

Black_Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.