Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   Ограничение пользователей (http://forum.oszone.net/showthread.php?t=105539)

dmon_s 22-04-2008 15:07 786781

Ограничение пользователей
 
Здраствуйте, товарищи.
Помогите решить проблему. Есть freebsd 6.2. На ней работает apache 2.2 из-под юзера www. Из-за кривовато написанного сайта, апач частенько входит в recursive call и процесс разростается до 200-300 мегабайт.Следовательно 2 гига опретативы и 2 гига свопа улетают и вешается вся машина. Разбираться с сайтом нет времени, по-этому решил ограничивать апач. Я добавил строчки в httpd.conf:
Код:

 
RLimitCPU 30 
# The first parameter sets the soft resource limit for all processes 
# and the second parameter sets the maximum resource limit. Either parameter 
# can be a number, or max to indicate to the server that the limit should be 
# set to the maximum allowed by the operating system configuration. 
# Raising the maximum resource limit requires that the server is running 
# as root, or in the initial startup phase    RLimitMEM 40000000 35000000 
# Memory limitation 
StartServers 8 
MinSpareServers 1
MaxSpareServers 7   
MaxClients 80 
MaxRequestsPerChild 70

Ограничение по памяти не работало, но MaxClients и MaxRequestsPerChild завершали процессы и система работала без перезагрузок месяц.
Но теперь система не успевает убивать "разжиревшие" процессы и сервер снова висит.
У меня возникла мысль задать ограничения через login.conf.
Я добавил такие строки:
Код:

hosting:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
:path=~/bin /bin /usr/bin /usr/local/bin:\
:manpath=/usr/share/man /usr/local/man:\
:nologin=/var/run/nologin:\
# Мах время использования процессора
:cputime=1h30m:\
# Мах кол-во памяти, выделяемой программе под данные
# Сам код программы и стэк не учитываются
:datasize=40M:\
# Сколько выделяем для стека программы
:stacksize=5M:\
# Мах размер физической памяти, выделяемой процессу
:memoryuse=45M:\
# Мах размер core файлов
:coredumpsize=1M:\
# Сколько файлов может открывать каждый процесс
:openfiles=128:\
# Сколько процессов может запускать пользователь
:maxproc=92:\
# Остальное берем из профиля default
:tc=default:

После этого я перестроил базу и изменил login class для юзера www:
Код:

chpass www
#Changing user information for www.
Login: www
Password: *
Uid [#]: 80
Gid [# or name]: 80
Change [month day year]:
Expire [month day year]:
Class: hosting
Home directory: /nonexistent
Shell: /usr/sbin/nologin
Full Name: World Wide Web Owner
Office Location:
Office Phone:
Home Phone:

Тем не менее процесы не отстреливаются при достижении 45 Мб. Помогите разобраться.

dmon_s 23-04-2008 16:56 787636

Проблема частично решилась. Нужно сделать следующее:
1. поубирать каменты внутри описания класса в login.conf.
2. Ограничения подрубились только после того, как я указал теже самые ограничения в классе default. Отсюда вывод, что демоны работают не из-под класса пользователя из-под которого запущены.
3. Перезапистить апач.

Непонятно, как задать ограничения исключительно на аппач, а не на весь класс default?


Время: 08:58.

Время: 08:58.
© OSzone.net 2001-