The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Maxproc limit exceeded + cannot fork"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"Maxproc limit exceeded + cannot fork"  
Сообщение от Absov (ok) on 09-Янв-08, 21:46 
Сегодня случилась странная вещь, такого никогда не было. На сервере перестал работать ssh и sendmail, при этом mysql и apache работали как ни в чем не бывало. Проблема решилась путем перезагрузки через службу техподдержки. (система FreeBSD 4.10-STABLE)
Предположение о переполнении файловой системы не подтвердилось. Анализ логов выявил следующие вещи.

В 00.45 первые признаки неполадок, но ssh и sendmail еще работают:

> Jan  9 00:45:00 merlin /kernel: maxproc limit exceeded by uid 0, please see tuning(7) and login.conf(5).

Это сообщение периодически повторяется до 1.50, когда появляется следующее:

> Jan  9 01:50:01 merlin sm-mta[124]: m08No1rP000124: SYSERR(root): doworklist: cannot fork: Resource temporarily unavailable

Sendmail продолжает работать и пересылать письма, но периодически выдает это сообщение.

> Jan  9 04:35:37 merlin sm-mta[367]: m092ZZTF000366: SYSERR(root): deliver: fork 2: Resource temporarily unavailable

Параллельно идут атаки на ssh (но они постоянно происходят и ни к чему плохому еще не приводили):

---
Jan  9 04:46:41 merlin sshd[408]: Illegal user guest from 218.61.232.60                      
Jan  9 04:46:44 merlin sshd[410]: Illegal user test from 218.61.232.60                      
Jan  9 04:46:48 merlin sshd[412]: Illegal user oracle from 218.61.232.60                    
Jan  9 04:46:51 merlin sshd[414]: Failed password for root from 218.61.232.60 port 35717 ssh2
Jan  9 04:46:55 merlin sshd[416]: Failed password for root from 218.61.232.60 port 36277 ssh2
Jan  9 04:46:58 merlin sshd[418]: Failed password for root from 218.61.232.60 port 36775 ssh2
Jan  9 04:47:02 merlin sshd[420]: Failed password for root from 218.61.232.60 port 37258 ssh2
Jan  9 04:47:06 merlin sshd[422]: Failed password for root from 218.61.232.60 port 38047 ssh2
Jan  9 04:47:09 merlin sshd[424]: Failed password for root from 218.61.232.60 port 38626 ssh2
Jan  9 04:47:13 merlin sshd[426]: Failed password for root from 218.61.232.60 port 39178 ssh2
Jan  9 04:47:16 merlin sshd[428]: Failed password for root from 218.61.232.60 port 39655 ssh2
Jan  9 04:47:20 merlin sshd[430]: Failed password for root from 218.61.232.60 port 40146 ssh2
Jan  9 04:47:24 merlin sshd[432]: Failed password for root from 218.61.232.60 port 40912 ssh2
Jan  9 04:47:27 merlin sshd[434]: Failed password for root from 218.61.232.60 port 41387 ssh2
Jan  9 04:47:31 merlin sshd[436]: Failed password for root from 218.61.232.60 port 41957 ssh2
Jan  9 04:47:34 merlin sshd[438]: Failed password for root from 218.61.232.60 port 42435 ssh2
Jan  9 04:47:38 merlin sshd[440]: Failed password for root from 218.61.232.60 port 42928 ssh2
Jan  9 04:47:41 merlin sshd[442]: Failed password for root from 218.61.232.60 port 43408 ssh2
Jan  9 04:47:45 merlin sshd[444]: Failed password for root from 218.61.232.60 port 44182 ssh2
Jan  9 04:47:49 merlin sshd[446]: Failed password for root from 218.61.232.60 port 44741 ssh2
Jan  9 04:47:52 merlin sshd[448]: Failed password for root from 218.61.232.60 port 45215 ssh2
Jan  9 04:47:56 merlin sshd[450]: Failed password for root from 218.61.232.60 port 45705 ssh2
Jan  9 04:47:59 merlin sshd[452]: Failed password for root from 218.61.232.60 port 46172 ssh2
---

Однако вслед за этой атакой появляется сообщение:

> Jan  9 04:48:01 merlin sshd[455]: fatal: fork of unprivileged child failed                  

После этого сообщения от ssh прекращаются, я так думаю что он уже не принимает запросов.

> Jan  9 11:04:47 merlin sshd[110]: error: fork: Resource temporarily unavailable              

Это видимо кто-то из наших админов попытался зайти.


Все, ssh после этого не работал до перезагрузки около 14.00.

Почта перестала работать в 09:04, после чего периодически повторялись только эти сообщения:

> Jan  9 09:04:09 merlin sm-mta[115]: NOQUEUE: SYSERR(root): daemon: cannot fork: Resource temporarily unavailable
> Jan  9 09:18:35 merlin sm-mta[115]: runqueue: Skipping queue run -- fork() failed: Resource temporarily unavailable

Вопрос простой, что это могло быть? Может быть атака? И другой момент, как с этим бороться если оно будет повторяться? Другой вариант - некорректная работа какой-то программы, которая захватила все ресурсы. Но пока-что это не подтвердилось, тем более apache и самый болезненный - mysql работали без проблем до самого последнего момента (перезагрузки).


Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "Maxproc limit exceeded + cannot fork"  
Сообщение от Arifolth email(ok) on 10-Янв-08, 18:44 
>Сегодня случилась странная вещь, такого никогда не было. На сервере перестал работать

1 а скока в момент этих глюков у вас на сервере процессов крутиться? в штуках?

2 закройте ссш фаерволом т.к. это не нормально. незачем ждать когда они продолбяться.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Maxproc limit exceeded + cannot fork"  
Сообщение от Absov (ok) on 10-Янв-08, 22:56 
>1 а скока в момент этих глюков у вас на сервере процессов
>крутиться? в штуках?

Ну этого я точно сказать не могу, я ведь не мог попасть на сервер когда это произошло до перезагрузки.
Должно было быть около 50 процессов.
Есть подозрение, что crontab мог запустить большое количество cvsup клиентов, используемых для синхронизации некоторых папок, так как был недоступен сервер, с которым он должен был синхронизироваться. Но он был недоступен до этого 3 дня, и тем не менее все работало нормально.

>
>2 закройте ссш фаерволом т.к. это не нормально. незачем ждать когда они
>продолбяться.

Я бы с удовольствием, но у меня (там, где я работаю) динамический ip. Боюсь потерять доступ.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Maxproc limit exceeded + cannot fork"  
Сообщение от Absov (ok) on 15-Янв-08, 16:42 
Вроде-бы обнаружил проблему. У меня каждые 5 минут запускался cvsup для синхронизации файлов с другим сервером. В этот раз другой сервер в течении 3 - 4 дней не был доступен. При этом, если cvsup запускается без ключа -1 или -r, то он бесконечно пытается подключиться. Сответственно, если сервер не доступен, а при этом каждые 5 минут запускается новая копия cvsup, то несложно подсчитать, сколько копий cvsup запустится за 2-3 дня. Естественно, количество ресурсов системы в конце-концов закончится, и, не смотря на это, все копии cvsup будут упрямо и прямолинейно пытаться подключиться к серверу. Новые процессы при этом создавать естественно невозможно. Но старые продолжают работать.

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

На мой взгляд поведение cvsup в данной ситуации весьма глупо реализовано. То есть при отсутствии соединения он фактически начинает работать в режиме демона (по умолчанию, если не указывать ключи -r и -1, то есть maxRetries=0 - бесконечность). А в нормальном режиме он завершает работу после одного удачного цикла синхронизации. Очень странно. Я не ожидал такого поведения.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Maxproc limit exceeded + cannot fork"  
Сообщение от angra (ok) on 16-Янв-08, 04:52 
Никогда не юзал cvsup, так что конкретно по нему не подскажу. А общее решение заключается в вызове через cron не самого cvsup, а скрипта обертки, который будет создавать и проверять pid(в этом случае уже запущенный процесс убивается и запускается новая копия) или lock(новый не запускается пока не завершит работу предыдущий) файл или просто делает проверку через ps
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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