LINUX.ORG.RU

Нехватка SHM

 , , ,


1

1

Началось всё с чего: одна очень нужная прога на культях с клиент-серверной моделью (сервер создаёт сокет и потом запускает клиент, передавая ему параметром ID сокета) перестала запускать клиент. И было сие не один раз, после нескольких часов танцев с бубном как-то само устранялось. Без параметров клиент тут же сегфолтился, и я не был уверен, происходит ли это из-за отсутствия параметра или он вообще сегфолтился в эти дни периоды.

Смотрел strace клиента, но безрезультативно; перед смертью процесс пытался читать файлы сокетов в /tmp и падал. Только сегодня поскроллил чуть выше и заметил, что на одном из таких обращений кидает ENOSPC. Немного посёрчив, как такое может быть, и неоднократно убедившись, что лимит SHM у меня запредельный, начал копать, как её может не хватать фактически.

И докопался. В ipcs -a было четыре тысячи записей. Соорудил скрипт для очистки сирот (с nattch=0):

ipcs -a|awk '{printf $2" "$6"\n"}'|grep ' 0$'|col1|while read a; do ipcrm -m "$a"; done
Только начало чистить — сервер радостно запустил клиент. После полного выполнения записей стало всего сотня.

Вопросы:

1) как я докатился до такой жизни? В интернетах пышуть, что сегмент может осиротеть при краше использующих ему процессов. Но это ж сколько их должно было накрашиться? Может, у меня руки из задницы и я (или какая-то говнософтина) что-то делаю не так?

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

3) насколько ССЗБизм вот так чистить? Вдруг лишнего вычищу и кого-то запущенного поломаю.



Последнее исправление: bodqhrohro_promo (всего исправлений: 2)

Так а что крашилось-то в итоге засирая shm? М.б. этот самый клиент на кутях?

PS. С тегами согласен.

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

Дак а хрен его знает. Клиент-то вряд ли, софтина мелкая, и сервис чинненько прибивается штатной утилиткой, унося за собой клюент. А вот арбузеры от нехватки рамы OOM киляет часто. Может ещё, я SIGKILL злоупотребляю, пиджин, например, прибивал так пару раз, а он до самофорканья и расшаривания охоч.

Но как тогда, спрашивается, сервера с циклично падающими и перезапускаемыми супервайзерами сервисами работают годами, если от банального засирания SHM система для требующего SHM софта превращается в тыкву?

bodqhrohro_promo
() автор топика

что лимит SHM у меня запредельный

А вот это зря, вангую причиной проблемы. Поставь shmmax не больше, чем памяти и shmall = shmmax/page size. И прочитай уже что оно такое и как работает, не то что бы я защищал пионерское управление памятью в линуксах, но ты явно что-то делаешь не так.

anonymous
()

Не реви.

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

К примеру, рекомендация для порта www/iridium:

For correct operation, shared memory support has to be enabled
in Iridium by performing the following command as root :

sysctl kern.ipc.shm_allow_removed=1

To preserve this setting across reboots, append the following
to /etc/sysctl.conf :

kern.ipc.shm_allow_removed=1

В лайнуксах тоже должна быть похожая штука.

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

То есть если поставить маленький, то оно таки начнёт само чиститься?

bodqhrohro_promo
() автор топика
Ответ на: Не реви. от iZEN

Не реви

Я не реву, я ж решил проблему, cам даже. Просто интересно, как мужик или как дебил.

В лайнуксах тоже должна быть похожая штука

Ну щя поищу чот в /proc//sys.

А вообще, пора мне таки к бздунам валить. Во-первых, лайнакс — кривое говно, мало того, что симптомы 12309 лезут хронически и окончательного решения им нет, так ещё и эта фигня. Во-вторых, понятие свободы у меня бздунское, а не анально-столлманское. Только это, как там у вас с прослойками для онли-гнулинуксового софта и онли-линуксовых дров? Уже готово?

bodqhrohro_promo
() автор топика
Ответ на: Не реви. от iZEN

И немедленно нагрепал

              /proc/sys/kernel/shm_rmid_forced (since Linux 3.1)
                     If this file is set to 1, all System V shared memory segments will be marked for destruction as soon  as  the
                     number  of attached processes falls to zero; in other words, it is no longer possible to create shared memory
                     segments that exist independently of any attached process.
bodqhrohro_promo
() автор топика
Ответ на: комментарий от EXL

А у меня была такая фигня. На 2 Гб ОЗУ не стартует одно Java-приложение, хотя свободной памяти - 90%. Ограничиваю потребление памяти 128 или 160 мегабайтами - работает, а 192 и выше - говорит что столько памяти у меня нет.

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

прослойками для онли-гнулинуксового софта

Закопать, используй гипервизор с каким-нибудь Void/Alpine внутри. (И разве такие программы вообще есть, кроме фурфажного Pale Moon? Или имеется в виду проприетарщина?)

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

используй гипервизор

Жирно.

фурфажного Pale Moon

Ась? А фуррифокс не фурфажный?

Или имеется в виду проприетарщина?

Например, да.

bodqhrohro_promo
() автор топика
Ответ на: комментарий от EXL

Вообще, ящитаю, все эти POSIX-костыли и некротрадиции давно пора закопать. Даже файл толком не залочить в 2k17 (что с одной стороны и хорошо, с другой стороны — налицо отсутствие функциональности, виндузятники-то живут себе с Unlocker под рукой). Ждём фуксию от гугла, авось да взлетит.

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

Ась?

Ну, собирается через круп, из-за чего практически GNU/Linux-only.

А фуррифокс не фурфажный?

Фурфажный, и у лисы есть лапки. :з

Например, да.

Тогда вот, да. Зачастую работает многое, но это эталонное ненужно.

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

собирается через круп

Там всё через круп, сам подход ущербен.

GNU/Linux-only

Оно ж изначально вообще 64-разрядной сборочкой для виндузятников было, потому что мозилла только 32-разрядную выпускала.

и у лисы есть лапки

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

эталонное ненужно

Как ты? Мне ещё бы для macOS/iOS/Android по прослойке, тогда вообще заживу, ставь чо хошь. IBM ещё в прошлом веке пытался такое в OS/2 провернуть, но не взлетело.

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

GNU/Linux-only

Дополнение: в контексте UNIX-like систем и на данный момент, конечно же. Windows — это отдельная планета с тиранидами, которую ни вспоминать, ни трогать не хочется.

Хотя лучше свинья

Выпей чаю, няша.

Как ты?

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

Я горожу о ненужности только из-за того, что это эпичный костыль, как и Wine, который в прекрасной Эквестрии будущего де-факто и существовать-то не должен. Разве корпорациям лень собирать ещё под три БЗДи? Жалко, что ли?

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

в контексте UNIX-like систем

На какось тоже нету

Windows — это отдельная планета с тиранидами

А в Одессе одни JID'ы!

Выпей чаю, няша

Недавно только выпил. И я уже не няша, тестостерон медленно делает своё дело.

сравнимое с белым шумом зомбоящика

Вот тут не надо, белый шум няшне, всяко лучше ковра. Ненавижу ящики с неотключаемым синим экраном. Настроечная таблица хороша тоже.

это эпичный костыль, как и Wine

Да у тебя всё костыль, фашист. Небось, надо только под линакс коноплять, да только под i386.

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

Ты б хотя бы diff показал, понить не могу.

тестостерон медленно делает своё дело

Отмазки. Кексик в глаз и в…

Да у тебя всё костыль

Всё, что не есть костыль от Plan 9 и иже с ним. Костыли бывают хорошие.

Небось, надо только под линакс коноплять, да только под i386.

Внезапно, для OpenBSD под PPC. (В этом случае я считаюсь латентным яблочником?)

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

Ты б хотя бы diff показал, понить не могу.

Ну тупыыыые линуксоеды!

$ diff <(echo 'На какось тоже нету') <(echo 'На какось тоже нету?')
1c1
< На какось тоже нету
---
> На какось тоже нету?

Кексик в глаз и в…

Да хоть до Ланы Тнук дов… — няшности от этого не прибавится. Поговаривают, что поедание cumпота прибавляет, ибо в cumпоте содержится тестостерон, который в желудке превращается в эстроген, но это ж сколько cumпота надо, чтобы фифект был...

Костыли бывают хорошие

Хорошие, потому что Plan 9? А другие критерии есть?

В этом случае я считаюсь латентным яблочником?

Ваистену!

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