[SOLVED]syslog-ng: Error accepting new connection; error='Too many open files (24)'

Доброго времени суток!

Сопсно, именно такой вот сабж начинает лезть в логи где то после суток работы сервера. О самой железяке: pptp сервер, количество соединений не превышает 500 а активных втрое меньше, так же на нем работает считалка трафика. Больше ничего... Гугление натолкнуло только на увеличение параметра max-connections в syslog-ng.conf, стояло значение 1024, увеличил до 10024 - та же картина. Пересборка, откат до предыдущей версии и прочее шаманство не помогают, внешние симптомы: пинг проходит успешно, трафик проходит без проблем, но залогиниться нереально даже с локального терминала и запросы на vpn соединение тоже не проходят. Но стоит перезапустить syslog как сразу все становится нормально. Сейчас увеличил вышеописанный параметр до 100024, завтра посмотрю, что получится. А пока прошу подсказать тех, кто сталкивался - может тут глубже собака порылась? Если надо какую еще инфу пишите - выложу. Заранее спасибо всем.

возможно это не сообщение

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

/

evadim написал(а):
тогда нужно покрутить ulimit на предмет увеличения количества одновременно открытых файлов.

Если бы всё было так просто...

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

:wq
--
Live free or die

Система харденед/пах/селинух

Система харденед/пах/селинух ?
какие ограничения стоят в системе и в частности в /etc/security/limits.conf ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Эмм... Я так понял, имеется

Эмм... Я так понял, имеется ввиду профиль... :-)

~ # ls -l /etc/make.profile
lrwxrwxrwx 1 root root 44 Ноя  7 11:53 /etc/make.profile -> /usr/portage/profiles/default/linux/x86/10.0

Не считая комментариев limits.conf пустой

evadim написал(а):
возможно это не сообщение syslogng а сообщение системы, тогда нужно покрутить ulimit на предмет увеличения количества одновременно открытых файлов.

Подскажите, а где это крутится? Я хотя бы посмотрю, сколько там значение стоит :)

"Мать, мать, мать... --- по привычке отозвалось эхо"

_Andrey написал(а):
evadim написал(а):
возможно это не сообщение syslogng а сообщение системы, тогда нужно покрутить ulimit на предмет увеличения количества одновременно открытых файлов.

Подскажите, а где это крутится? Я хотя бы посмотрю, сколько там значение стоит :)

Кому (и на фига) я толкую о необходимости знакомства с основами Unix?!?

Рулится оно через sysctl (/etc/sysctl.conf).
Посмотреть: # sysctl -a | grep file (оно же интуитивно-понятно (если знать что примерно и где искать)...).

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

:wq
--
Live free or die

Я понимаю, что многое можно

Я понимаю, что многое можно найти самому, но неужели так зазорно просто спросить? К чему столько эмоций? Да и потом я внял вашему предупреждению еще в первом сообщении и не собираюсь просто так менять этот ключ, зато теперь буду знать где он находится. Спасибо.

~ # sysctl -a | grep file
fs.file-nr = 9248       0       204669
fs.file-max = 204669
error: permission denied on key 'net.ipv4.route.flush'

Непойму, почему нет прав смотреть net.ipv4.route.flush. Если смотреть без grep в полном списке такой параметр вообще отсутствует да и такая строчка не пробегает.

.

_Andrey написал(а):
Я понимаю, что многое можно найти самому, но неужели так зазорно просто спросить? К чему столько эмоций?

Оно (эмоции в смысле) относится не столько к Вам.
Не понимаете в чём фишка --- забейте :)

_Andrey написал(а):
~ # sysctl -a | grep file
fs.file-nr = 9248       0       204669
fs.file-max = 204669
error: permission denied on key 'net.ipv4.route.flush'

Непойму, почему нет прав смотреть net.ipv4.route.flush. Если смотреть без grep в полном списке такой параметр вообще отсутствует да и такая строчка не пробегает.

Это не параметр, а сообщение об ошибке. Выводится не в stdout, а в stderr (почему возникает эта ошибка --- навскидку не скажу).

Попробуйте [например] ~ # sysctl -a 2>/dev/null | grep file.

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

ЗЫ: Ещё рекомендую откатить [по крайней мере до умолчательного] ограничение на число соединений к syslog-ng.

Что за файловая система? С какими параметрами (опциями) инициировалась? Размер/использование?

:wq
--
Live free or die

Про premission denied это

Про premission denied это просто любопытство, не так актуально :) По проблеме изменение/увеличение max-connections в конфиге syslog'а толку не дает... :(
Файловая система ext3, размер 70 Гб, занято ~20 Гб, как понять инициировалась?

Гугление привело на какой то забугорный сайт, где рассказывалось об этой проблеме. Текст звучал следующим образом

Цитата:
If you have many clients, you might well run out of fd's (the default limit for maximum file descriptors is around 1000), thus syslog-ng might not be able to open files. The workaround then would be to increase the maximum file handles (ulimit -n) before starting syslog-ng, the best is to put this in the init script. You know you need to do this when you see errors like:

Jun  5 14:30:51 sysloghost2 syslog-ng[1597]: Error accepting new connection; error='Too many open files (24)'

Как я понял речь идет о максимальном количестве открытых файлов отпущенном одному процессу.

~ # ulimit -n
1024

Попробую последовать совету и увеличу эту величину. По результатам отпишусь.

Делается так ( за последствия

Делается так ( за последствия не отвечаю :) ) :
Мой пример с реальной машинки :

/etc/security/limits.conf
@dirsvr           hard    nofile         35000
@dirsvr           soft    nofile         35000

 # sysctl

fs.file-max = 300000

и проребутить машинку

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

.

slepnoga написал(а):
Делается так ( за последствия не отвечаю :) ) :

Третьим будешь :)

slepnoga написал(а):
Мой пример с реальной машинки :

/etc/security/limits.conf
@dirsvr           hard    nofile         35000
@dirsvr           soft    nofile         35000

 # sysctl

fs.file-max = 300000

и проребутить машинку

Ты невнимателен (впрочем, строго говоря то же можно сказать и в мой адрес).

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

:wq
--
Live free or die

Думаю. можно говорить ура :)

Думаю, можно говорить ура :) Уже неделя - полет нормальный. Решением проблемы стало увеличение, как я понимаю, лимита количества открытых файлов на процесс, сделано было командой

~# ulimit -n 10240

Возможно так же сыграло роль и одновременное с этим увеличение числа max-connections в syslog-ng.conf, но это только возможно, экспериментировать не хочется :)

.

_Andrey написал(а):
Решением проблемы стало увеличение, как я понимаю, лимита количества открытых файлов на процесс, сделано было командой
~# ulimit -n 10240

Число какое-то неровное.
Надо бы 8192 али 16384.

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

:wq
--
Live free or die

Число есть результат значения

Число есть результат значения по умолчанию умноженного на 10 :-) (1024*10=10240) А систему сразу же сконфигурировал - забил в init перед запуском syslog'а

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".