Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Too many open files / 25 сообщений из 87, страница 1 из 4
10.10.2012, 10:15
    #37991176
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
продолжение темы http://www.sql.ru/forum/actualthread.aspx?tid=974251

не могу заставить debian (2.6.32-5-amd64) увеличить лимит открываемых файлов для пользователя firebird.

в /etc/security/limits.conf прописано:
firebird soft nofile 16384
firebird hard nofile 16384
строчку "session required pam_limits.so" в /etc/pam.d/su расскоментировал
в файле /etc/pam.d/common-session тоже все прописано

все равно при превышении кол-ва открытых файлов 1024 выдает ошибку "Too many open files"
Что нужно сделать?
...
Рейтинг: 0 / 0
10.10.2012, 12:51
    #37991501
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny M,

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

Значит, если сделать
su
<ввести пароль рута>
su firebird
<тут уже никакого пароля не надо>
ulimit -n

что выводится? Если 1024 - значит из limits.conf конфигурация не считывается, либо позже чем-то перекрывается. Вариант - обидная ошибка в лишнем пробеле (точке, еще чем-то), случайно оставленном в limits.conf.
...
Рейтинг: 0 / 0
11.10.2012, 21:09
    #37994533
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonline,

выдает 1024. прикрепил limits.conf, может у меня глаз уже замылен
...
Рейтинг: 0 / 0
11.10.2012, 21:13
    #37994537
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny Mприкрепил limits.confОбычно в рекомендуется завершать файл одной или более пустой строкой (переводом строки). В Вашем файле такой строки не вижу. Мож как раз тот случай?
...
Рейтинг: 0 / 0
11.10.2012, 21:17
    #37994539
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
vkle,

тоже заметил, сделал перенос строки. пока ничего не изменилось, попробую перегрузить сервер
...
Рейтинг: 0 / 0
12.10.2012, 08:51
    #37994880
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
"/etc/security/limits.conf works only for services that use pam and the pam module pam_limits" - работает только с службами которые используют pam - а может firebird вообще pam не использует и этим все объясняется. как то можно это проверить?
...
Рейтинг: 0 / 0
25.10.2012, 14:32
    #38013119
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
решения до сих пор не нашел.
даже когда делаю:

su firebird
ulimit -n 10000

ошибка не исчезает, хотя ulimit -n показывает 10000, т.е. firebird не подхватывает увеличение лимита.

Что делать? Неужели ни у кого нет работающей крупной БД Firebird на Debian и с такой проблемой никто не сталкивался? и Debian и Firebird - стандартные установки.
...
Рейтинг: 0 / 0
25.10.2012, 23:45
    #38013874
Jek_a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Попробуйте сделать следующие:

От пользователя "root"

1. Отредактировать файл "/etc/sysctl.conf"
Код: powershell
1.
fs.file-max = 65536


2. Загрузить параметры ядра с файла /etc/sysctl.conf
Код: powershell
1.
sysctl -p


3. Проверить, что настройки применились
Код: powershell
1.
2.
cat /proc/sys/fs/file-max
65536


4. Отредактировать файл "/etc/security/limits.conf"
Код: powershell
1.
2.
firebird     soft    nofile  1024 
firebird     hard    nofile  65536


(Т.е. пользователь firebird может увеличивать или уменьшать значение soft лимит, но не превышать hard лимит)

5. Добавить строчку в файл "/etc/pam.d/login"
Код: powershell
1.
session    required     pam_limits.so


6. Добавить следующие линии в файл ".bash_profile" (Этот файл должен быть в домашней директории пользователя "firebird", например /home/firebird/.bash_profile)
Код: powershell
1.
2.
3.
if [ $USER = "firebird" ]; then
      ulimit -n 65536
fi


7. Перезагрузить сервер.
8. Выполнить вход от пользователя "firebird" и стартовать DB заново.
...
Рейтинг: 0 / 0
26.10.2012, 14:23
    #38014577
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Jek_a6. Добавить следующие линии в файл ".bash_profile" (Этот файл должен быть в домашней директории пользователя "firebird", например /home/firebird/.bash_profile)
Код: powershell
1.
2.
3.
if [ $USER = "firebird" ]; then
      ulimit -n 65536
fi


7. Перезагрузить сервер.
8. Выполнить вход от пользователя "firebird" и стартовать DB заново.
дело в том что firebird стартует автоматом при загрузке сервера и в консоли не логинится и домашней папки у него нет
надо видимо все таки другой скрипт выбрать? какой?
...
Рейтинг: 0 / 0
26.10.2012, 14:36
    #38014593
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny M,

Да хоть в rc.local прописать sudo -u firebird ulimit -n 65536
Если заработает, тогда можно думать дальше.

Кстати, еще вот подумалось. Возможно уже где-то говорилось, не помню. FB classic или super? Возможно, если используется CS, настройка «слетает» при остановке всех процессов ФБ? Или, например, новые процессы не видят изменения ulimit, только существующие в момент отработки комманды? Что, если в одной консоли сделать su firebird, а в другой изменить ulimit? В первой изменения видны? А если после этого с третьей консоли зайти?

P.S. Идеи, возможно, бредовые; это я пытаюсь нащупать корень проблемы. Возможно какая-то из идей у кого-то правильную ассоциацию вызовет :)
...
Рейтинг: 0 / 0
26.10.2012, 15:02
    #38014643
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonline Что, если в одной консоли сделать su firebird, а в другой изменить ulimit? В первой изменения видны? А если после этого с третьей консоли зайти?
попробовал. ни первая ни третья изменения не видят
...
Рейтинг: 0 / 0
26.10.2012, 16:14
    #38014861
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny M,

Заинтересовало.
Для начала, у меня ldd /usr/sbin/fb_inet_server говорит, что FB не использует PAM, так что ulimit надо выставлять вручную - limits.conf тут в пролете. С другой стороны, поскольку FB стартует без шелла, получается облом с использованием стартовых скриптов. Ручные установки ulimit (через su) работают только в пределах текущей сессии и не касаются других сессий и собственно ФБ, что логично, поскольку ulimit - встроенная команда оболочки.

Думаю, есть смысл с этим всем вовращаться в ветку по ФБ. Возможно, dimitr будет не слишком занят на конференции и ответит, как же конфигурируются эти лимиты в линуксовом ФБ.

Да, кстати, а что если глобально поднять все лимиты?
...
Рейтинг: 0 / 0
26.10.2012, 16:32
    #38014923
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonlineВозможно, dimitr будет не слишком занят на конференции и ответит, как же
конфигурируются эти лимиты в линуксовом ФБ.
На это и я могу ответить: никак. Это системная настройка и Firebird туда не суётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.10.2012, 16:37
    #38014938
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonlineДа, кстати, а что если глобально поднять все лимиты?

а как? в limits.conf прописывал "* * nofile 65365" - не помогло
и нашел в инете такое:
Птица берёт текущее значение лимита открытых файлов (getrlimit).
Если макс. возможное больше, то устанавливает лимит в новое значение
(setrlimit).
Как же увеличить текущий лимит? ulimit получается здесь не причем?!
...
Рейтинг: 0 / 0
26.10.2012, 21:04
    #38015239
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny MmiwaonlineДа, кстати, а что если глобально поднять все лимиты?

а как? в limits.conf прописывал "* * nofile 65365" - не помогло
и нашел в инете такое:
Птица берёт текущее значение лимита открытых файлов (getrlimit).
Если макс. возможное больше, то устанавливает лимит в новое значение
(setrlimit).
Как же увеличить текущий лимит? ulimit получается здесь не причем?!
Ну а я что два поста перед этим писал о логинах и РАМах?

Я бы еще попробовал включить комманду ulimit -n в скрипт /etc/init.d/firebird2.5-FBARCH. А если не поможет (потому что нефиг обычному пользователю себе лимиты поднимать), то тогда sudo ulimit -n с соответствующей правкой /etc/sudoers
...
Рейтинг: 0 / 0
27.10.2012, 02:06
    #38015388
Jek_a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Скачал firebird's source code, ради интереса посмотреть процедуру установки в них.

автордело в том что firebird стартует автоматом при загрузке сервера и в консоли не логинится и домашней папки у него нет

Все правильно он и должен выполнять автостарт. При выполнеии скрипта автостарта не нужно выполнять login shell. Домашняя директория у пользователья "firebird" существует, вот кусок кода установки:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TryAddUser() {

	AdditionalParameter=$1
	testStr=`grep firebird /etc/passwd`
	
    if [ -z "$testStr" ]
      then
        useradd $AdditionalParameter -d /opt/firebird -s /bin/false \
            -c "Firebird Database Owner" -g firebird firebird 
    fi

}



Домашняя директория у него "/opt/firebird", а вот login shell "/bin/fasle", т.е. у этого пользователья нет shell. Соответственно "/etc/pam.d/login" не выполняется и не вызывет библиотеку "pam_limits.so", от которой напрямую зависит файл "/etc/security/limits.conf"

Можете проверить:
Код: powershell
1.
grep -i 'firebird' /etc/passwd


Читаем:
Код: powershell
1.
2.
3.
4.
man limits.conf

limits.conf - configuration file for the pam_limits module 
 


Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
man 8 pam_limits

FILES
       /etc/security/limits.conf
           Default configuration file

EXAMPLES
       For the services you need resources limits (login for example) put a the following line in /etc/pam.d/login as the last line for that service (usually after the pam_unix session line):

           #%PAM-1.0
           #
           # Resource limits imposed on login sessions via pam_limits
           #
           session  required  pam_limits.so


авторЧто, если в одной консоли сделать su firebird, а в другой изменить ulimit? В первой изменения видны? А если после этого с третьей консоли зайти?
Ни одна из-них работать не будет, проблему я описал выше. Более того "ulimit -n", работает в пределах текущей сессии.
авторldd /usr/sbin/fb_inet_server говорит, что FB не использует PAM
С чего ему использовать PAM (Pluggable Authentication Modules), если PAM необходим для аутентификации и срабатывет на Login action. Например "su" использует PAM.
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
ldd /bin/su 
        linux-vdso.so.1 =>  (0x00007fffc61ff000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007f36bc95c000)
        libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007f36bc758000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f36bc3f9000)
        libaudit.so.0 => /lib64/libaudit.so.0 (0x00007f36bc1df000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f36bbfdb000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f36bcd9f000)


автор(потому что нефиг обычному пользователю себе лимиты поднимать)
Глупости говорите. Для этого и используется "limits.conf" файл, чтоб делегировать это непривилегированному пользователю. Ипользование limits.conf необходимо для таких RDBMS как: Sybase ASE, Oracle, DB2 итд.

Вам нужно сделать:
1. Изначально выполнить login от пользователя "root".
2. Сменить shell для пользователя "firebird"
Код: powershell
1.
usermod -s /bin/bash firebird


3. Выполнить шаги которые я описал выше: 1, 2, 3, 4, 5, 6 (7 и 8 выполнять не надо)
4. Выполнить логин от пользоветеля "firebird"
Код: powershell
1.
su - firebird


"-" между su и firebird обязательно. Для того чтобы ипользовать firebird's user environment.
5. Проверить текущий shell:
Код: powershell
1.
echo $0


6. Пороверить текущие настройки:
Код: powershell
1.
ulimit -a | grep 'open files'


Сейчас должны использоваться настройки с файла "limits.conf"

7. Стартовать "firebird" вручную с текущего shell.
Открыть firebird's startup script и проверить секцию start. Там есть строка для старта "firebird".
Что-то вроде:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
start)
	echo -n "Starting $FULLNAME "
	daemon --user=$FBRunUser "export FIREBIRD LD_LIBRARY_PATH; $MANAGER -pidfile $pidfile -start -forever"
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$name
	echo
	;;


Из приведенного выше кода вам нужно выполнить:
Код: powershell
1.
/opt/firebird/bin/fbmgr.bin -pidfile /var/run/firebird/defualt.pid -start -forever"


Это только пример у вас наверняка другая строчка для старта firebird, так что ориентируйтесь на неё.
...
Рейтинг: 0 / 0
27.10.2012, 12:18
    #38015495
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Jek_a,

Это ж надо столько умных слов написать чтобы выдать столько плохих советов. Восхищаюсь

Первое и самое главное - у ТС ФБ ставился из репозитория debian, так что большинство рассуждений мимо кассы, так как в debian даже близко нет тех скриптов и параметров, котрые вы так любезно проанализировали.

А меньшинство рассуждений сводится к тому, что в скрипт, который запускает ФБ, нужно вручную добавить комманду изменения ulimit, что я написал в предыдущем посте без обильного цитирования отсутствующих конфигов.
...
Рейтинг: 0 / 0
28.10.2012, 14:18
    #38016090
Jek_a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
авторЭто ж надо столько умных слов написать чтобы выдать столько плохих советов. Восхищаюсь
Сколько, и что конкретно вы имели ввиду из моих двух постов непонятно? Из ваших слов следует что IBM , Oracle или Firebird дает "плохие советы" используя "/etc/security/limits.conf" файл, для настройки лимитов, который напрямую зависит от PAM.
IBMTo set the maximum number of open file descriptors for processes running under the user, add the following to the file, /etc/security/limits.conf
For more details on how to configure the PAM_limits security module type:
man limits.conf
Не умные они, надо использовать "rc.local" или startup scripts служб для этого, как вы написали.

Для использования файла "/etc/security/limits.conf", пользователю необходим shell, а не /bin/false.
Примером плохого совета, служит проверка динамических значений, которые работают на время жизни текущей сессии из двух других сессий. Или не использвание "/etc/security/limits.conf", только потому что "/usr/sbin/fb_inet_server" не использует PAM, так как он не имеет никаго отношения к аутентификации, соотвественно и к PAM. Я вам это объяснил, и вы видать это восприняли как личную обиду. Не вижу причин веселья по этому поводу. Хотя это ваше мнение и высказли свою точку зрения, спроить я с вами не буду.
авторПервое и самое главное - у ТС ФБ ставился из репозитория debian
Опять не понятно, почему это для вас "первое и самое главное".
Давайте выясним что такое репозиторий.
debian.orgA Debian repository is a set of Debian packages organized in a special directory tree which also contains a few additional files containing indexes and checksums of the packages.
A repository can be both online and offline (for example on a CD-ROM)
Т.е. репозиторий - это не что иное, как набор пакетов доступных для установки. В свою очередь эти пакеты собираются из исходных кодов и помещаются в репозиторий. Тот самый исходный код я и использовал для нахождений причины не работающего "/etc/security/limits.conf" файла. Не важно как вы установите пакет c репозитория или DVD (CD), суть от этого не изменится, если оба они собраны с одинаковами параметрами из одного и того же кода.

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

@ miwaonline - Предлогаю закончить дискусию, вместо того чтоб плодить оффтоп.
...
Рейтинг: 0 / 0
06.11.2012, 14:06
    #38026769
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonlineА меньшинство рассуждений сводится к тому, что в скрипт, который запускает ФБ, нужно вручную добавить комманду изменения ulimit, что я написал в предыдущем посте без обильного цитирования отсутствующих конфигов.

Добавление ulimit в скрипт не помогает: скрипт запускается не от имени пользователя firebird, а внутри скрипта идет команда start-stop-daemon в которой указано что службу firebird запускать от пользователя firebird.
Как бы ulimit запустить от имени firebird? от su уже всяко пробовал - не подхватывает
...
Рейтинг: 0 / 0
06.11.2012, 16:38
    #38027127
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny Mвнутри скрипта идет команда start-stop-daemon в которой указано что службу firebird запускать от пользователя firebird.

SS? А почему не CS? Вроде как на линуксах «роднее». Или у тебя все совсем плохо с оперативкой и одно ядро на сервере? Ну и есть ненулевые шансы, что лимит на количество открытых файлов будет для каждого соединения 1024, а не один на всю службу.

Кстати, а есть какой-то воспроизводимый пример, чтобы протестировать проблему у себя? Скрипт там, или бинарник.
Evgeny M
Как бы ulimit запустить от имени firebird? от su уже всяко пробовал - не подхватывает
Несколько не совсем идейно правильных соображений по изменению стартап-скрипта
- поменять юзера, от имени которого запускается ФБ, на рута (осторожно, ибо если надо будет вернуть обратно, то не забыть вернуть права на базы данных и рабочие каталоги)
- или вместо start-stop-daemon делать sudo firebird ulimit -n && $FBSERVER $FBOPTS (осторожно, ибо start-stop-daemon тоже не от нефиг делать написали)

Но я бы для начала все-таки попробовал FB CS.
...
Рейтинг: 0 / 0
07.11.2012, 10:06
    #38027940
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonline,
у меня СуперКлассик (англ. SuperClassic Server) — один процесс, но свой поток на каждое соединение. Данная архитектура введена в версии 2.5.
...
Рейтинг: 0 / 0
07.11.2012, 11:13
    #38028082
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny M,

И все равно я бы для интереса протестировал на классике. Если нет возможности - дай воспроизводимый пример, погоняю у себя.
...
Рейтинг: 0 / 0
07.11.2012, 12:31
    #38028342
Evgeny M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonline,
переключу сегодня на классик.
а какой пример? стандартная установка Firebird
...
Рейтинг: 0 / 0
07.11.2012, 15:52
    #38028874
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
Evgeny M,

Нет, я имею в виду, есть ли какой-то стандартный сценарий для воспроизведения ошибки. Возможно, она возникает при достижении некоторого количества подключений, или при выполнении какого-то запроса, или при подключении какого-то компютера, или еще что-то в том же духе.
Учитывая, что ни в bid=2 ни здесь никто не может сказать ничего конкретного, можно предположить, что с проблемой редко сталкиваются. Лично я, например, за 6 лет работы со связкой ФБ + дебиен на не одном десятке проектов такой ошибки не встречал.
А если еще учесть наличие Таблоида в bid=2 с его привычкой по малейшему поводу делать тесты на сотни подключений и миллионы операций, то можно предположить, что проблема довольно редкая и завязана на какую-то твою специфику. Потому повторюсь - есть ли хоть какой-то сценарий для воспроизведения ошибки?
...
Рейтинг: 0 / 0
07.11.2012, 16:02
    #38028903
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Too many open files
miwaonlineА если еще учесть наличие Таблоида в bid=2 с его привычкой по малейшему
поводу делать тесты на сотни подключений и миллионы операций, то можно предположить, что
проблема довольно редкая и завязана на какую-то твою специфику.
У Таблоида ulimit работает. В отличии от...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Too many open files / 25 сообщений из 87, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]