too many open files

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

too many open files

Непрочитанное сообщение Гость » 2012-01-26 17:41:36

Добрый вечер.
Потратил пару дней на решение следующей проблемы.
Пишу на плюсах под фри. Много потоков, синхронизация осуществляется через семафоры.
Дошло до того, что программа перестала работать, по причине too many open files
почитал хэнд бук, амеровские форумы, все сходятся во мнение kern.maxfiles, kern.maxfilespreproc
переменные для этих параметров ставлю на горячую через sysctl по 65536, или через /boot/loader.conf
не помогает.
так же есть kern.openfiles который в read only, и не ставится не в loader.conf не в sysctl.conf вероятно потому что
она отображает количество открытых файлов, но не устанавливает лимиты.
..ну вот. нужна помощь. спасибо.
Последний раз редактировалось f_andrey 2012-01-26 17:48:12, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения. приводите полную диагностику, больше логов больше вероятности ответа, а не флуда

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35477
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: too many open files

Непрочитанное сообщение Alex Keda » 2012-01-26 21:58:58

Убей их всех! Бог потом рассортирует...

Проходил мимо
проходил мимо

Re: too many open files

Непрочитанное сообщение Проходил мимо » 2012-01-26 22:55:35

/etc/login.conf
man login.conf

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 15:26:57

Alex Keda писал(а):http://forum.lissyara.su/viewtopic.php?f=3&t=5280
курить всю тему
аха, Лис, спасиб за отзывчивость.
я по errno уже понял что дескрипторы)) и могу добавить ко вчерашнему кроме maxfiles и т.п. есть семафорные переменные...
вот они:

kern.ipc.semmni=10
kern.ipc.semmns=60
kern.ipc.semmnu=30
kern.ipc.semmap=30

kern.ipc.semaem=16384
kern.ipc.semvmx=32767
kern.ipc.semusz=136
kern.ipc.semume=10
kern.ipc.semopm=100
kern.ipc.semmsl=60

и методом тыка буду пробовать. дебагер говорит мне что на процесс больше 26 семафором не получается, но нативные семафоры инкапсулированы в мои классы-обертки.. т.ч. не больше 26 экземпляров моих_семафоров..
если процесс ещё 4ре где-то себе забирает, ну т.е. не моим кодом, а уровнем ядра, тогда всё сходиться(но не слышал что такое бывает). хз, надо тестить.

кроме того, код залип, смотрю kern.openfiles ну например 156, выключаю свой код, выключаю БД, ещё всякую ерунду, смотрю kern.openfiles 102, запускаю свой код, опять залипалово c семафорами "too many open files", errno=23, но! kern.openfiles=128
т.е. семафоры косячат =(

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

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 15:29:07

Проходил мимо писал(а):/etc/login.conf
man login.conf

аха, спасибо. нашел) попробую тоже.

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 15:38:03

kT___ писал(а):
Alex Keda писал(а):http://forum.lissyara.su/viewtopic.php?f=3&t=5280
курить всю тему
аха, Лис, спасиб за отзывчивость.
я по errno уже понял что дескрипторы)) и могу добавить ко вчерашнему кроме maxfiles и т.п. есть семафорные переменные...
вот они:

kern.ipc.semmni=10
kern.ipc.semmns=60
kern.ipc.semmnu=30
kern.ipc.semmap=30

kern.ipc.semaem=16384
kern.ipc.semvmx=32767
kern.ipc.semusz=136
kern.ipc.semume=10
kern.ipc.semopm=100
kern.ipc.semmsl=60

и методом тыка буду пробовать. дебагер говорит мне что на процесс больше 26 семафором не получается, но нативные семафоры инкапсулированы в мои классы-обертки.. т.ч. не больше 26 экземпляров моих_семафоров..
если процесс ещё 4ре где-то себе забирает, ну т.е. не моим кодом, а уровнем ядра, тогда всё сходиться(но не слышал что такое бывает). хз, надо тестить.

кроме того, код залип, смотрю kern.openfiles ну например 156, выключаю свой код, выключаю БД, ещё всякую ерунду, смотрю kern.openfiles 102, запускаю свой код, опять залипалово c семафорами "too many open files", errno=23, но! kern.openfiles=128
т.е. семафоры косячат =(

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

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 15:41:13

kT___ писал(а):
Проходил мимо писал(а):/etc/login.conf
man login.conf

аха, спасибо. нашел) попробую тоже.
default:\
:openfiles=unlimited:\

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 15:47:06

прекрасно бль...
делаю тогда так:
sysctl -a | grep 30

kern.ipc.semmnu
kern.ipc.semmap
kern.ipc.numopensockets
p1003_1b.sem_nsems_max
p1003_1b.nsems

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

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 16:07:29

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

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 16:26:11

теперь нормально до 30

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 16:33:56

а кто нить знает как раскачать, то что возвращает sysctl c ключом p1003_1b.sem_nsems_max, который = 30

т.к. этот ключик лишь возвращает значение переменной, но не задаёт лимит

очередной раз sysctl -a | grep 30

и кроме
p1003_1b.sem_nsems_max=30
p1003_1b.nsems=30
которые, повторюсь, отображаю лимит, но не устанавливают его
есть вот такие..

kern.sched.interact=30
kern.filedelay=30
vfs.nfs.downdelayinterval=30
net.inet.ip.gitttl=30
ещё пять ключей
net.inet.************=30
hw.ath.calibrate=30

ничего =(

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 16:43:33

а.. ну ещё
p1003_1b.sem_nsems_max=0
до запуска программы. и модуль ядра, который про семафоры, я подгружаю в run-time, как думаете, это критично, если параметры для семафоров задаю в /boot/loader.conf?
думаю нет.. т.к. параметры всё равно остаются неизменными после загрузки модуля, но это наводит на мысль что
p1003_1b.sem_nsems_max становится равен 30 после загрузки модуля, и вероятно именно модуль тянет этот лимит

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 17:42:33

kT___ писал(а):а.. ну ещё
p1003_1b.sem_nsems_max=0
до запуска программы. и модуль ядра, который про семафоры, я подгружаю в run-time, как думаете, это критично, если параметры для семафоров задаю в /boot/loader.conf?
думаю нет.. т.к. параметры всё равно остаются неизменными после загрузки модуля, но это наводит на мысль что
p1003_1b.sem_nsems_max становится равен 30 после загрузки модуля, и вероятно именно модуль тянет этот лимит
ещё интересней, бль..

"sysctl p1003_1b.sem_nsems_max" gives the maximum number of POSIX semaphores (per process? system wide?).

Since FreeBSD 8.1, "sudo sysctl -w p1003_1b.sem_nsems_max=256" can be used to change this limit at runtime.

Before FreeBSD 8.1, SEM_MAX constant should be changed in the kernel source code, and the kernel have to be recompiled. (p1003_1b.sem_nsems_max is not configurable in /etc/sysctl.conf, it is an hardcoded limit).

Before FreeBSD 8.0, the POSIX semaphores are disabled by default: the kernel have to be compiled using P1003_1B_SEMAPHORES option. Extract of sys/conf/NOTES:

#####################################################################
# POSIX P1003.1B

# Real time extensions added in the 1993 POSIX
# _KPOSIX_PRIORITY_SCHEDULING: Build in _POSIX_PRIORITY_SCHEDULING

options _KPOSIX_PRIORITY_SCHEDULING
# p1003_1b_semaphores are very experimental,
# user should be ready to assist in debugging if problems arise.
options P1003_1B_SEMAPHORES

# POSIX message queue
options P1003_1B_MQUEUE

#####################################################################

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-27 17:46:42

всё понятно бль. закрывайте тред. я в печали.

продолжаю
проходил мимо

Re: too many open files

Непрочитанное сообщение продолжаю » 2012-01-27 22:25:24

тем временем, пока качается релиз 9й фряхи.. продолжаю раскачивать количество семафоров.
добавил пару выше указанных опций в ядро, пересобрал, и не понимаю зачем..
что бы в ран-тайме не писать kldload sem ..супер.

код ядра.

uipc_sem.c
#define SEM_MAX 30
переопределил 30000

а вот интересно, они от куда лимит в 30 взяли??
про дарвин пишут что там 100 000.. яблочные мажоры

ща, ещё разочек перекомпилю ядро.. или успеет 9ка закачаться.


..и у меня теперь новый вопрос. а скажите плиз.. этот тред висит в ветке Фри для начинающих, это я так понимаю ещё мелочи?
и в перспективе писать код ядра оптом?
вох*ение \мрачно

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35477
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: too many open files

Непрочитанное сообщение Alex Keda » 2012-01-27 23:37:36

какбе проблема описанная в начале треда - она в форуме прожёвана не раз.
поэтому и сюда попало.

ну а раз оно у вас глубже оказалось - щас передвину куданить =))

вы отпишитесь чем оно кончится.
полезные треды такие, монологовые
частенько поиском на такое набредаешь, и ответы находишь.
если автор отписался,а не забил =))
Убей их всех! Бог потом рассортирует...

kT___
рядовой
Сообщения: 12
Зарегистрирован: 2012-01-26 17:32:41

Re: too many open files

Непрочитанное сообщение kT___ » 2012-01-28 0:31:17

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

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: too many open files

Непрочитанное сообщение manefesto » 2012-01-30 10:23:19

курите маны
manefesto# sysctl -a | grep maxfiles
kern.maxfiles: 12328
kern.maxfilesperproc: 11095
я такой яростный шо аж пиздеЦ
Изображение

spf
ефрейтор
Сообщения: 58
Зарегистрирован: 2009-11-05 15:28:46

Re: too many open files

Непрочитанное сообщение spf » 2012-01-31 7:47:11

У автора топика кончались семафоры.

SEM_MAX в коде ядра привязан

Код: Выделить всё

p31b_setcfg(CTL_P1003_1B_SEM_NSEMS_MAX, SEM_MAX);
должен рулится через

Код: Выделить всё

sysctl p1003_1b.sem_nsems_max=300000