The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"maxproc limit exceeded by uid 2"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Мониторинг, логи / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"maxproc limit exceeded by uid 2"  +/
Сообщение от yurybx (ok) on 20-Май-15, 09:59 
За прошлую ночь получил на почту серию сообщений (26 штук):
/usr/libexec/save-entropy: Cannot fork: Resource temporarily unavailable
Просмотрев логи, увидел соответственно серию ошибок:
kernel: maxproc limit exceeded by uid 2, please see tuning(7) and login.conf(5).
Uid 2 - это пользователь с именем "operator", под которым запускается скрипт save-entropy по крону. Никаких других процессов от имени operator я не вижу ни в crontab, ни в ps.
limits -U operator выдаёт "maxprocesses infinity"
В 8 утра ошибки прекратились и если запустить save-entropy вручную, то никаких ошибок не выдаёт.
Ерунда какая-то. Сервер работает уже 5 лет, никогда такого не было.
На всякий случай посмотрел smart жестких дисков - всё в норме.
Что это может быть?

FreeBSD 8.0

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "maxproc limit exceeded by uid 2"  +/
Сообщение от сис.админ_23rus email(ok) on 20-Май-15, 10:13 
> kernel: maxproc limit exceeded by uid 2, please see tuning(7) and login.conf(5).

а о чем Вам поведали  tuning(7) and login.conf(5)?
возможно поможет http://www.opennet.me/openforum/vsluhforumID1/61147.html


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "maxproc limit exceeded by uid 2"  +/
Сообщение от yurybx (ok) on 20-Май-15, 10:50 
>> kernel: maxproc limit exceeded by uid 2, please see tuning(7) and login.conf(5).
> а о чем Вам поведали  tuning(7) and login.conf(5)?
> возможно поможет http://www.opennet.me/openforum/vsluhforumID1/61147.html

tuning не могу найти на сервере, а login.conf говорит, что default:\ :maxproc=unlimited:\
Так дело в том, что я не менял никаких настроек на сервере уже года три.
(в той ветке maxfiles limit exceeded, это вроде другое)
Я ещё обратил внимание по своим логам, что меня прошлую ночь активно брут-форсили (подбор пароля). Брут-форс начался 17:38, и в 17:44 появилась первая ошибка cannot fork. Брут-форс закончился сегодня в 6:59, но последняя ошибка cannot fork пришла в 8:00. Может это какой-то новый способ атаки?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "maxproc limit exceeded by uid 2"  +1 +/
Сообщение от lavr email on 20-Май-15, 11:01 
>[оверквотинг удален]
>> а о чем Вам поведали  tuning(7) and login.conf(5)?
>> возможно поможет http://www.opennet.me/openforum/vsluhforumID1/61147.html
> tuning не могу найти на сервере, а login.conf говорит, что default:\ :maxproc=unlimited:\
> Так дело в том, что я не менял никаких настроек на сервере
> уже года три.
> (в той ветке maxfiles limit exceeded, это вроде другое)
> Я ещё обратил внимание по своим логам, что меня прошлую ночь активно
> брут-форсили (подбор пароля). Брут-форс начался 17:38, и в 17:44 появилась первая
> ошибка cannot fork. Брут-форс закончился сегодня в 6:59, но последняя ошибка
> cannot fork пришла в 8:00. Может это какой-то новый способ атаки?

https://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/troubl...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "maxproc limit exceeded by uid 2"  +/
Сообщение от yurybx (ok) on 20-Май-15, 12:21 
Спасибо, разобрался: оказывается у меня сотни зомби-процессов висели. Эти процессы плодит мой скрипт, и сейчас ломаю голову, как это исправить. Нужна помощь.
Суть скрипта следующая: это бесконечный цикл, который считывает строки из com-порта при помощи read. Как только строка считана, он отправляет её в качестве параметра другому скрипту на обработку. Поскольку работа второго скрипта может занять время, за которое по com-порту может поступить уже следующая строка, то первый скрипт не должен ждать завершения второго. Для этого я поставил символ "&" в конце строки запуска второго скрипта. Всё работает хорошо, но зомби плодятся. Как сделать запуск процесса без ожидания завершения таким образом, чтобы он потом не висел со статусом "zombie"?
Перезапускать скрипт нельзя, т.к. пропуск данных, принимаемых по com-порту недопустим.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "maxproc limit exceeded by uid 2"  +/
Сообщение от lavr email on 20-Май-15, 12:35 
>[оверквотинг удален]
> мой скрипт, и сейчас ломаю голову, как это исправить. Нужна помощь.
> Суть скрипта следующая: это бесконечный цикл, который считывает строки из com-порта при
> помощи read. Как только строка считана, он отправляет её в качестве
> параметра другому скрипту на обработку. Поскольку работа второго скрипта может занять
> время, за которое по com-порту может поступить уже следующая строка, то
> первый скрипт не должен ждать завершения второго. Для этого я поставил
> символ "&" в конце строки запуска второго скрипта. Всё работает хорошо,
> но зомби плодятся. Как сделать запуск процесса без ожидания завершения таким
> образом, чтобы он потом не висел со статусом "zombie"?
> Перезапускать скрипт нельзя, т.к. пропуск данных, принимаемых по com-порту недопустим.

что мешает записывать данные в файл или в базу и затем обрабатывать?

Переходите на perl, python, php...

логика:
1) запустили первый скрипт - бесконечный цикл
2) почему или по какому условию и кто плодит запуск второго скрипта?

разберетесь с 2) - поймете проблему

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "maxproc limit exceeded by uid 2"  +/
Сообщение от yurybx (ok) on 20-Май-15, 12:44 
В файл записывать не получится, т.к. второй скрипт должен мгновенно реагировать и посылать данные пользователю. Запуск второго скрипта плодит первый, потому что запуск происходит каждый раз, как только получена очередная строка по com-порту. Значит средствами sh проблему не решить?

> что мешает записывать данные в файл или в базу и затем обрабатывать?
> Переходите на perl, python, php...
> логика:
> 1) запустили первый скрипт - бесконечный цикл
> 2) почему или по какому условию и кто плодит запуск второго скрипта?
> разберетесь с 2) - поймете проблему

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "maxproc limit exceeded by uid 2"  +/
Сообщение от universite email(ok) on 20-Май-15, 21:45 
> В файл записывать не получится, т.к. второй скрипт должен мгновенно реагировать и
> посылать данные пользователю. Запуск второго скрипта плодит первый, потому что запуск
> происходит каждый раз, как только получена очередная строка по com-порту. Значит
> средствами sh проблему не решить?

Писать в файл, можно использовать номера строк, как номер транзакции.
Например,


cu -l /dev/cuaa2 -s9600 < /dev/zero >> /var/log/ATC.txt &

От туда считывать скриптом.
man tee и &
В свежих верcиях FreeBSD есть devd.

В общем, ошибки дизайна скриптов.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "maxproc limit exceeded by uid 2"  +/
Сообщение от Pahanivo (ok) on 21-Май-15, 09:48 
> В общем, ошибки дизайна скриптов.

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "maxproc limit exceeded by uid 2"  –1 +/
Сообщение от yurybx (ok) on 21-Май-15, 10:31 
Как в таком случае обеспечить мгновенную реакцию на появление в файле новой строки?

> Писать в файл, можно использовать номера строк, как номер транзакции.
> Например,

 
> cu -l /dev/cuaa2 -s9600 < /dev/zero >> /var/log/ATC.txt &
>  

> От туда считывать скриптом.
> man tee и &
> В свежих верcиях FreeBSD есть devd.
> В общем, ошибки дизайна скриптов.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "maxproc limit exceeded by uid 2"  +/
Сообщение от Pahanivo (ok) on 21-Май-15, 12:18 
> Как в таком случае обеспечить мгновенную реакцию на появление в файле новой
> строки?

для начала научитесь говорить на грамотном техническом языке - что в вашем понимание "мгновенно" вряд ли кому понятно. если речь идет о временном промежутке - то они измеряются в секундах согласно системе С.


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "maxproc limit exceeded by uid 2"  +/
Сообщение от yurybx (ok) on 21-Май-15, 14:59 
Перефразирую. Задача такова, чтобы между событием получения строки по com-порту и событием обработки данной строки не было искусственно созданной паузы. Запуск обработки строки должен происходить вследствие её приёма, а не по таймеру. Однако, приём следующей строки должен происходить независимо от того, завершилась ли обработка предыдущей.

>> Как в таком случае обеспечить мгновенную реакцию на появление в файле новой
>> строки?
> для начала научитесь говорить на грамотном техническом языке - что в вашем
> понимание "мгновенно" вряд ли кому понятно. если речь идет о временном
> промежутке - то они измеряются в секундах согласно системе С.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

14. "maxproc limit exceeded by uid 2"  +/
Сообщение от Pahanivo (ok) on 21-Май-15, 20:36 
> Перефразирую.

Попытаюсь ...
> Задача такова, чтобы между событием получения строки по com-порту и событием
> обработки данной строки не было искусственно созданной паузы.

хм, если вы не будете искусственно создавать паузы, то и пауз не будет. по моему это слишком элементарно.
> Запуск обработки строки должен происходить вследствие её приёма, а не по таймеру.

запускайте обработку сразу после регистрации приема строки, вам никто не запрещает.
> Однако, приём следующей строки должен происходить независимо от того, завершилась ли
> обработка предыдущей.

однако, что вам мешает принимать строку независимо?

ПыСы: словоблудие сплошное.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

12. "maxproc limit exceeded by uid 2"  –1 +/
Сообщение от universite email(ok) on 21-Май-15, 15:41 
> Как в таком случае обеспечить мгновенную реакцию на появление в файле новой
> строки?

Берете калькулятор и считаете:
1) скорость COM-порта
2) скорость операции чтения/записи из памяти
3) скорость операции чтения/записи с диска

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "maxproc limit exceeded by uid 2"  –1 +/
Сообщение от yurybx (ok) on 21-Май-15, 15:59 
Разговор зашёл в тупик. Решил объяснить на примере, так будет наглядней. Вот так выглядит мой скрипт, который работает постоянно:

while read -r line < /dev/cuau0; do
        /usr/datahandle "$line" &
done

Скрипт считывает очередную строку из com-порта и отправляет её на обработку другому скрипту с именем datahandle. Для того, чтобы не пропустить следующую строку, которая может уже передаваться по com-порту, я добавил & в конце вызова скрипта-обработчика. Всё отлично работает, никаких задержек (!), но плодятся зомби-процессы сотнями.
Вопрос: можно ли средствами sh выполнить задачу и при этом избежать нашествия зомби-процессов? Подчеркну, что задержки недопустимы, т. к. обработчик посылает уведомления пользователю в реальном времени.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "maxproc limit exceeded by uid 2"  +/
Сообщение от Pahanivo (ok) on 22-Май-15, 06:45 
> Разговор зашёл в тупик. Решил объяснить на примере, так будет наглядней. Вот
> так выглядит мой скрипт, который работает постоянно:
> while read -r line < /dev/cuau0; do
>         /usr/datahandle "$line" &
> done
> Скрипт считывает очередную строку из com-порта и отправляет её на обработку другому
> скрипту с именем datahandle. Для того, чтобы не пропустить следующую строку,
> которая может уже передаваться по com-порту, я добавил & в конце
> вызова скрипта-обработчика. Всё отлично работает, никаких задержек (!), но плодятся зомби-процессы

ну дак и смотри почему у тебя процессы не завершаются (datahandle).
при чем тут вообще "мгновенно-не-мгновенно"???

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "maxproc limit exceeded by uid 2"  –1 +/
Сообщение от yurybx (ok) on 22-Май-15, 09:17 
В том то и дело, что процессы datahandle завершаются. Но согласно политике linux, они висят со статусом zombie по той причине, что процесс-родитель (первый скрипт) не дожидается их завершения и не получает от них кода завершения (отсутствие команды wait). Думаю, не нужно обьяснять, почему я не могу использовать команду wait.

> ну дак и смотри почему у тебя процессы не завершаются (datahandle).
> при чем тут вообще "мгновенно-не-мгновенно"???

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "maxproc limit exceeded by uid 2"  +/
Сообщение от Andrey Mitrofanov on 22-Май-15, 09:23 
> Но согласно политике
> linux, они висят со статусом zombie по той причине, что процесс-родитель
> (первый скрипт) не дожидается их завершения и не получает от них
> кода завершения (отсутствие команды wait).

О! Спасибо!! Узнал что-то новое!!! </ага>

> Думаю, не нужно обьяснять, почему я
> не могу использовать команду wait.

Ну, вставь jobs >/dev/null 2>&1 перед done. А вдруг? Политика всё-таки.

>> ну дак и смотри почему у тебя процессы не завершаются (datahandle).

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

19. "maxproc limit exceeded by uid 2"  +/
Сообщение от yurybx (ok) on 22-Май-15, 10:02 
Работает! Теперь в процессах постоянно висит только один zombie-процесс (судя по всему, последний запущенный). Проблема решена. Большое спасибо!

>> Но согласно политике
>> linux, они висят со статусом zombie по той причине, что процесс-родитель
>> (первый скрипт) не дожидается их завершения и не получает от них
>> кода завершения (отсутствие команды wait).
> О! Спасибо!! Узнал что-то новое!!! </ага>
>> Думаю, не нужно обьяснять, почему я
>> не могу использовать команду wait.
> Ну, вставь jobs >/dev/null 2>&1 перед done. А вдруг? Политика всё-таки.
>>> ну дак и смотри почему у тебя процессы не завершаются (datahandle).

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

20. "maxproc limit exceeded by uid 2"  +/
Сообщение от lavr email on 22-Май-15, 10:08 
>[оверквотинг удален]
> последний запущенный). Проблема решена. Большое спасибо!
>>> Но согласно политике
>>> linux, они висят со статусом zombie по той причине, что процесс-родитель
>>> (первый скрипт) не дожидается их завершения и не получает от них
>>> кода завершения (отсутствие команды wait).
>> О! Спасибо!! Узнал что-то новое!!! </ага>
>>> Думаю, не нужно обьяснять, почему я
>>> не могу использовать команду wait.
>> Ну, вставь jobs >/dev/null 2>&1 перед done. А вдруг? Политика всё-таки.
>>>> ну дак и смотри почему у тебя процессы не завершаются (datahandle).

kern.maxproc
kern.maxprocperuid

https://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/troubl...

учесть что maxusers несколько устаревший параметр для тюнинга, лучше
оперировать прямо с верхними параметрами, предварительно посмотрев текущие
и не забыть что kern.maxprocperuid должен быть как минимум на единицу меньше
чем kern.maxproc

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "maxproc limit exceeded by uid 2"  +/
Сообщение от Andrey Mitrofanov on 22-Май-15, 10:11 
> Работает! Теперь в процессах постоянно висит только один zombie-процесс (судя по всему,
> последний запущенный). Проблема решена. Большое спасибо!

Да, не за что  же. Я не хотел.   Честно.   Хотел пошутить, мол, и шелы-то у них не bash-истые, и ядро какое-то не такое. Но какие-же здесь шутки? :`(

>> Ну, вставь jobs >/dev/null 2>&1 перед done. А вдруг? Политика всё-таки.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

18. "maxproc limit exceeded by uid 2"  +/
Сообщение от Andrey Mitrofanov on 22-Май-15, 09:25 
>Но согласно политике linux, они висят
>linux

Эээ, простите, "наверху" наблюдаю

maxproc limit exceeded by uid 2 (Мониторинг, логи / FreeBSD)
Мои глаза ой?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру