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)
Ответ на: комментарий от crypt

crypt> а что ты сделал в свои годы для хип-хопа

Да ничего он не сделал - смысла нет у него такое спрашивать. Он бесполезный евангелист systemd, который по факту вредит свободному ПО и косвенно поддерживает таких проприетарщиков как Microsoft.

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

intelfx> Какой кошмар, опциональное поведение ломает чей-то долбанутый workflow.

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

Просто надо банить оправдывателей фашистских действий Поцеринга.

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

intelfx> ублюдочность SysV IPC

В каком месте? Да и с чего вдруг ублюдочность, если, как ты выше написал, гномосеки не использовали этот IPC? И что мешало им тогда dbus использовать? Это ведь тоже IPC. Ещё они могли свой костыль для убивания гномопроцессов по списку наваять, чтобы Поцеринг ко всем не лез под дверь срать.

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

На самом деле

у кого-то до сих пор не развито критическое мышление.

grem ★★★★★
()

ssh в пользователя 'postgres'

«Если за это не убивать, то за что тогда убивать?» © vsl

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

Прежде чем использовать громкие слова типа «продакшн», ты бы хоть разобрался что они значат.

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

Почему-то ни с чем нет проблем

Могу подогнать.

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

systemsql. За основу возьмут mssql.

А вместо init-скриптов будут хранимые процедуры.

Evil_And ★★
()

А что на других дистрибутивах?

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

Не уходи от вопроса.

Я не собираюсь отвечать на «спердобейся».

У чувака в голове есть некий идеальный мир <...> и он тупо не понимает что есть реальность со своими проблемами, задачами и процессами, и именно в этой реальности люди живут, работают и получают бабки

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

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

В каком месте?

Ответ на этот вопрос предлагается в качестве несложного упражнения читателю.

И что мешало им тогда dbus использовать? Это ведь тоже IPC.

Им — кому? Общая память и шина сообщений, конечно, оба называются IPC, но работают «немного» по-разному. У тебя с такими познаниями лезть в калашный ряд не особо выходит, да.

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

Просто надо банить оправдывателей фашистских действий Поцеринга.

+1, где подписать?

tommy ★★★★★
()

одна из причин почему я использую freebsd на серверах

потом что ВНЕЗАПНО неопределенное поведение случается чуть более, чем никогда

ну и моя жопа спокойна, конечно же

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

Хамло подзаборное. Аргументы, как я понимаю, кончились?

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

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

более того, эта ошибка даже в хваленой RHEL с Oracle Database есть:

https://www.linkedin.com/pulse/how-kill-your-database-seconds-os-update-rhel-...

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

обрати внимание на дату публикации - 30 мая 2016, проблема свежая

welcome to GNU\Linux world bro

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

Эм, «долбанутый флоу» - это аргумент?

Впрочем, от студента с горящими глазами другого ожидать было бы неверно, сам таким был.

leave ★★★★★
()

Что меня в этом всем удивляет, это то, что LP - сотрудник редхата и он должен пилить systemd в первую очередь с оглядкой на стек самого RHEL. А по ощущению как будто работает отдельно. И команда у них маловата. Эх, вот если бы Торвальдс взялся за руководство таким проектом...

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

Давай, расскажи мне, чего он делать должен, а что нет.7

Иди с этой фразой в поддержку Майкрософт работать.

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

одна из причин почему я использую freebsd на серверах

во FreeBSD же тоже будут менять систему инициализации? слышал, есть планы. конечно, в спорах «FreeBSD vs Linux» я всегда за пингвина, но вот когда подумаю, что во фряхе систему инициализации, ядро, системную библиотеку и минимальное окружение будет делать одна команда, так вот уже не так хочется спорить.

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

Право голоса было использовано, чтобы нахамить. Потому и такая реакция.

maxcom привёл доводы к тому, чтобы не делать так конкретно в случае постгреса. В общем случае есть две-три точки зрения: 1) systemd вообще не должен подчищать SysV IPC за кем-либо; или 2) нужен правильный подсчёт запущенных от имени пользователя процессов, а не только сессий; или 3) просто не следует логиниться под учётками, от имени которых работают какие-то системные демоны. В апстриме решили (1), и у меня есть два комментария по поводу сабжа: - Идеального кода не бывает, сломали-узнали-починили; - Сам по себе юзкейс достаточно странный, поэтому истерика по поводу допущенного ляпа неуместна.

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

системд ненужен.

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

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

во FreeBSD же тоже будут менять систему инициализации?

Это было обсуждение возможностей и планов на какой-то конференции. На это дела закончились. «будут» и «мы подумали что было бы неплохо» это кардинально разные вещи.
Скоро готовится новый релиз, и до сих пор никаких действий в этом направлении я не видел в release notes. И слава б-гу.

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

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

а что с демонизацией не так?..

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

Нет, речь как раз таки про пальцы тоже. Просто пальцы и остальное у нас любил резать Рамси же.

Рамси кое-что ещё любил резать.

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

а что с демонизацией не так?

написано давно и не ими, NIH синдром. хотят все сломать и заточить под себя как поступала microsoft

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

я не знаю что может быть НЕ так с демонизацией, ЕМНИП, это давно изъезженная и тысячу раз пережеванная тема

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

void die_if_shit_happens(int val, char *errstr) {
	if (val < 0) {
		if (errstr != NULL) fprintf(stderr, "%s\n", errstr);
		exit(EXIT_FAILURE);
	}
}

void daemonize() {
	pid_t forkpid = fork();
	die_if_shit_happens(forkpid, "Unable to daemonize: fork.");
	if (forkpid != 0) exit(EXIT_SUCCESS);
	die_if_shit_happens(setsid(), "Unable to daemonize: start new session.");
	die_if_shit_happens(chdir("/"), "Unable to daemonize: change working directory to /.");
	die_if_shit_happens(close(STDIN_FILENO), "Unable to daemonize: can't close stdin.");
	die_if_shit_happens(close(STDOUT_FILENO), "Unable to daemonize: can't close stdout.");
	die_if_shit_happens(close(STDERR_FILENO), "Unable to daemonize: can't close stderr.");
	int stdio = open("/dev/null", O_RDWR);
	die_if_shit_happens(dup(stdio), NULL);
	die_if_shit_happens(dup(stdio), NULL);
}

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

тебе рассказать весь набор фич системд?

например, параллельная загрузка, ннада? или cgroups?

да и подчищение памяти у пользователя - имхо, это круто, непонятно только, почему эта фича включается и отключается только сразу для всего компьютера, а не для отдельного сервиса

непонятно какую дурь жрали в RHEL, когда вместо того чтобы самостоятельно пофиксить баг, они зачем-то в документации предложили сделать это пользователю

мне это видится не как проблема поттеринга, а как проблема чудесных мантейнеров, редких специалистов своего дела.

вот тут на ЛОРе постоянно рассказывают сказки, что мантейнеры якобы чуть ли не лучше разработчиков знают софт и его код, и поэтому могут чуть ли не патчить исходники софта руками, добавляя и убирая фичи. Вся наивность этих сказок вот так и проявляется, на эпик факапах

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

тебе рассказать весь набор фич системд?

в этом и ужас, что он многовато на себя берет

например, параллельная загрузка, ннада?

параллельную загрузку можно было и без системд организовать,но NIH синдром же

да и подчищение памяти у пользователя - имхо, это круто

если ПО осталвяет shared memory после завершения своей работы, значит так и надо, не? посмотри сколько у тебя всего лежит в /dev/shm и сколько оно занимает места

непонятно какую дурь жрали в RHEL, когда вместо того чтобы самостоятельно пофиксить баг, они зачем-то в документации предложили сделать это пользователю

это просто бизнес, см. темой выше: Systemd убивает Postgresql, ест детей и взрывает IPC (комментарий)

мне это видится не как проблема поттеринга, а как проблема чудесных мантейнеров, редких специалистов своего дела.

это проблема борьбы за бабки в мире опенсорса

вот тут на ЛОРе постоянно рассказывают сказки, что мантейнеры якобы чуть ли не лучше разработчиков знают софт и его код, и поэтому могут чуть ли не патчить исходники софта руками, добавляя и убирая фичи. Вся наивность этих сказок вот так и проявляется, на эпик факапах

вот тут лорчую

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

Тому же Теону он отрезал несколько пальцев и ещё кое-что. Но кроме Теона он кое-что не резал больше никому. В отличие от пальцев (эт тип любимая игруха).

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

Право голоса было использовано, чтобы нахамить.

а мне показалось, это ты назвал всех истеричными хейтерами:)

maxcom привёл доводы к тому, чтобы не делать так конкретно в случае постгреса.

ага, правда я не уверен, что так оно и есть.

Сам по себе юзкейс достаточно странный

Он странный для тех, кто не работал с postgres. О чем собственно тебе все и пишут, но ты, ес-но, ведешь себя, как Д'Артаньян.:)

Идеального кода не бывает, сломали-узнали-починили;

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

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

Что мне было бы интересно понять, так это из-за чего произошел спор вокруг tmux. Он тоже был вокруг темы «неправильного» с точки зрения Философии SystemD (tm) поведения программ. И я в тот момент посмотрел вокруг себя и увидел счастливого виндовс пользователя, который делает disconnect - rdp сессия остается со всеми программами, делает logout - все закрывается. Если уж делать большие многофункциональные программы, которые делают только ограниченный набор юзкейсов, то почему не включить еще один полезный юзкейс.

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

Ладно, думаю, стоит завязать обсуждение отрезания МПХ :-)

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

вау! двойной форк! ничего себе разница в демонизации!

ЕМНИП, в линуксе (а шиштемди как раз только под него и заточен, точнее прибит гвоздями) дабл форк не нужен...

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