Страница 1 из 1
Прожорливый Apache
Добавлено: 2008-06-06 13:17:41
Nick_mad
Здравствуйте.
Столкнулся с такой проблемой. На серваке 2 гига оперативы, 1 гиг под себя седает апач (вер. 2.0.63). Как его вразумить чтобы меньше жрал??? вот листинг top по юзеру www ну и плюс один процес от рута.
Код: Выделить всё
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
88009 www 1 4 0 87696K 17604K accept 0 0:00 0.00% httpd
88010 www 1 4 0 87696K 17728K accept 0 0:00 0.00% httpd
88012 www 1 4 0 87696K 17812K accept 0 0:00 0.00% httpd
88011 www 1 4 0 87696K 17816K accept 0 0:00 0.00% httpd
88021 www 1 4 0 87696K 15656K accept 0 0:00 0.00% httpd
88013 www 1 4 0 86672K 16484K accept 0 0:00 0.00% httpd
88016 www 1 4 0 87696K 16316K accept 1 0:00 0.00% httpd
88020 www 1 4 0 85648K 10740K accept 1 0:00 0.00% httpd
88055 www 1 4 0 85648K 10688K accept 1 0:00 0.00% httpd
88056 www 1 4 0 85648K 10688K accept 1 0:00 0.00% httpd
Я думал ограничить его правкой в /etc/login.conf (взял кусочек с Вашего сайта)
Код: Выделить всё
www:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=ee:\
:path=/bin /usr/bin /usr/local/bin:\
:manpath=/usr/share/man /usr/local/man:\
:nologin=/sbin/nologin:\
:cputime=5m:\
:datasize=512M:\
:stacksize=4M:\
:memorylocked=64M:\
:memoryuse=256M:\
:filesize=512M:\
:coredumpsize=0:\
:openfiles=1024:\
:maxproc=64:\
:sbsize=unlimited:\
:priority=20:\
:requirehome:\
:umask=026:\
:tc=default:
потом выполнил команду cap_mkdb /etc/login.conf, но после внесения правки ничего не поменялося.
По отключал модули которые мне не нужны, тоже ничего. Помогите настроить его правильно. Хотя бы тыкните куда рыть.
Re: Прожорливый Apache
Добавлено: 2008-06-06 13:27:56
Alex Keda
шапку топа покажите
Re: Прожорливый Apache
Добавлено: 2008-06-06 14:47:04
salvator
Апач с чем собран? php модулем? если да - в php.ini попробуйте с memory_limit поэкспериментировать. Сам апач голый не должен столько жрать, у меня 3 метра жрет
Re: Прожорливый Apache
Добавлено: 2008-06-09 9:08:03
Nick_mad
шапку топа покажите
Код: Выделить всё
last pid: 99834; load averages: 0.00, 0.00, 0.00 up 20+17:19:06 09:00:02
58 processes: 1 running, 57 sleeping
CPU states: 0.4% user, 0.0% nice, 0.0% system, 0.0% interrupt, 99.6% idle
Mem: 490M Active, 1201M Inact, 181M Wired, 25M Cache, 112M Buf, 104M Free
Swap: 4057M Total, 4057M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
365 root 1 96 0 4984K 2228K select 1 10:09 0.00% ppp
79986 mysql 3 96 0 81892K 31832K ucond 0 8:14 0.00% mysqld
526 root 1 96 0 3348K 1512K select 1 5:25 0.00% natd
877 clamav 1 4 0 57040K 51868K accept 1 3:37 0.00% clamd
18015 squid 1 4 0 307M 302M kqread 0 1:37 0.00% squid
765 root 2 96 0 7448K 1744K select 0 0:20 0.00% apcupsd
716 bind 5 96 0 28628K 21800K select 0 0:20 0.00% named
97349 www 1 4 0 87696K 27136K accept 0 0:13 0.00% httpd
98208 www 1 4 0 87696K 26744K accept 0 0:11 0.00% httpd
30732 root 1 96 0 85648K 10660K select 0 0:10 0.00% httpd
98035 www 1 4 0 87696K 24824K accept 1 0:09 0.00% httpd
97572 www 1 4 0 87696K 29748K accept 1 0:07 0.00% httpd
98139 www 1 4 0 87696K 27992K accept 1 0:07 0.00% httpd
882 clamav 1 20 0 4176K 1904K pause 0 0:05 0.00% freshclam
637 root 1 96 0 3156K 1024K select 1 0:05 0.00% syslogd
98257 www 1 4 0 87696K 24432K accept 1 0:05 0.00% httpd
910 root 1 96 0 5616K 2476K select 0 0:04 0.00% sshd
Апач с чем собран?
Да, модуль php подключен. Попробую поиграться с этим параметром. спс.
А что делать с внесенными изменениями в logi.conf? Убирать или оставить???
Re: Прожорливый Apache
Добавлено: 2008-06-09 9:09:10
Alex Keda
а помоему всё нормально
Re: Прожорливый Apache
Добавлено: 2008-06-09 9:27:17
Nick_mad
Всмысле все норманльно?? Тоесть то что он так под себя много берет это нормально? У мня осталося 100 метров памяти, а еще почта не ходит под нагрузкой. Я переживаю что может просто памяти не хватить. Надо идти докуплять пару гигов памяти??? Но я где то читал что апач ел стоко то, а потом после того как доставили память он стал есть больше. Я почему то думал что это можно поднастроить. И почему после внесения изменений в login.conf где явно прописано ограничение на использование памяти апач игнорирует их?? Прошу Вас объяснить мне так незнание порождает страх ну и т.д.
Re: Прожорливый Apache
Добавлено: 2008-06-09 9:34:25
salvator
дык, совсем не обязательно пхп в апаче модулем держать, есть замечательный вариант - FastCGI, только тогда пхп отдельно жрть будет))
Re: Прожорливый Apache
Добавлено: 2008-06-09 9:41:23
Nick_mad
Так и есть при отключеном модуле пхп результат ниже, А где можна больше узнать о разнице апаче с модулем пхп и как FastCGI? И еще ну даже если я их разделю то пхп тоже может под себя брать столько же сколько и брал, тоесть в результате опять свободной памяти не будет.
Код: Выделить всё
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
226 www 1 4 0 6192K 2868K accept 0 0:00 0.00% httpd
224 www 1 4 0 6192K 2868K accept 0 0:00 0.00% httpd
227 www 1 4 0 6192K 2868K accept 0 0:00 0.00% httpd
225 www 1 4 0 6192K 2868K accept 0 0:00 0.00% httpd
228 www 1 4 0 6192K 2808K accept 1 0:00 0.00% httpd
Re: Прожорливый Apache
Добавлено: 2008-06-09 10:05:45
serge
Про fast-cgi читайте на этом сайте и ищите по форуму. Очень часто обсуждается данная тема.
Re: Прожорливый Apache
Добавлено: 2008-06-09 10:14:27
salvator
для начала, можно запустить меньше экземпляров пхп, т.к. в случае с модулем они часто висят в холостую, например, при отдаче статического контента. про FastCGI - для апача не скажу, не настраивал, рекомендую nginx - апач по сравнению с ним нервно курит в сторонке по производительности. а здесь написано как пхп к нему подключить
http://blog.kovyrin.net/2006/05/30/ngin ... cgi-howto/
Re: Прожорливый Apache
Добавлено: 2008-06-09 13:28:40
Alex Keda
ещё , синтаксис реврита был бы такой же - половина хостингов уже выкинули бы апач...
Re: Прожорливый Apache
Добавлено: 2008-06-09 13:50:19
Nick_mad
К сожалению я не смогу перейти на Nginx так ка у меня сайт как раз использует rewrite. Так что придется юзать апач. Правда я с опаской отношусь ко всему с чем не работал, апач мне более знаком, а вот про Nginx узнал сегодня. Но в будущем объязательно им займуся. А пока буду переводить вечером пхп в режим FastCGI. А там видно будет.
Re: Прожорливый Apache
Добавлено: 2008-06-09 13:52:13
salvator
lissyara писал(а):ещё , синтаксис реврита был бы такой же - половина хостингов уже выкинули бы апач...
нжинксовский реврайт в общем-то не уступает в возможностях апачевскому... можно попробывать конвертер реврайта написать из апача на нжингз
Re: Прожорливый Apache
Добавлено: 2008-06-09 14:15:47
Nick_mad
Что, Nginx настолько круче апача, что стоит себе заимет немного гемора что бы его установить и настроить????
Re: Прожорливый Apache
Добавлено: 2008-06-09 14:33:53
salvator
Nick_mad писал(а):Что, Nginx настолько круче апача, что стоит себе заимет немного гемора что бы его установить и настроить????
имхо, гемора не заимеешь, настраивается гораздо понятнее апача, а на счет круче - у них не много разные ниши, но для фронтенда к fastcgi удобней я ничего не встречал
Re: Прожорливый Apache
Добавлено: 2008-06-09 14:41:30
Alex Keda
salvator писал(а):lissyara писал(а):ещё , синтаксис реврита был бы такой же - половина хостингов уже выкинули бы апач...
нжинксовский реврайт в общем-то не уступает в возможностях апачевскому... можно попробывать конвертер реврайта написать из апача на нжингз
ф топку.
по мне - лучше бы подстроились под апач.
Re: Прожорливый Apache
Добавлено: 2008-06-09 14:59:30
salvator
lissyara писал(а):
ф топку.
по мне - лучше бы подстроились под апач.
по мне так апачевский реврайт ф топку - синтаксис моск поломать можно
Re: Прожорливый Apache
Добавлено: 2008-06-09 15:12:34
Alex Keda
можно.
однако 80% мира переучить тяжело.
объёмную задачу взяли разработчики
======
или модулем грузить - родной или апачёвый синтаксис юзается.
Re: Прожорливый Apache
Добавлено: 2008-06-09 16:03:21
helloworld
*мимо проходя*....lighttpd
Re: Прожорливый Apache
Добавлено: 2008-06-09 21:39:02
ProFTP
Код: Выделить всё
92684 www 1 20 0 286M 0K lockf 0:36 0.00% <httpd>
92770 www 1 20 0 286M 0K lockf 0:32 0.00% <httpd>
92787 www 1 20 0 288M 0K lockf 0:30 0.00% <httpd>
92772 www 1 20 0 287M 0K lockf 0:30 0.00% <httpd>
92685 www 1 20 0 287M 0K lockf 0:30 0.00% <httpd>
92689 www 1 20 0 286M 0K lockf 0:30 0.00% <httpd>
92788 www 1 20 0 287M 0K lockf 0:30 0.00% <httpd>
92686 www 1 20 0 287M 0K lockf 0:29 0.00% <httpd>
92683 www 1 20 0 286M 0K lockf 0:29 0.00% <httpd>
там еще пхп может грузить модули которые приписаны в конфиге extensions.ini
Код: Выделить всё
# top | grep php-cgi
3410 rab 1 4 0 279M 13172K accept 0:00 0.80% php-cgi
3408 rab 1 8 0 277M 7272K wait 0:00 0.48% php-cgi
3410 rab 1 4 0 279M 13172K accept 0:00 0.07% php-cgi
# top | grep php-cgi
3410 rab 1 4 0 279M 13172K accept 0:00 0.07% php-cgi
# top | grep php-cgi
# top | grep php-cgi
# top | grep php-cgi
# top | grep php-cgi
одинаково памяти жрет?
Re: Прожорливый Apache
Добавлено: 2008-06-10 9:05:51
salvator
как вам такое удается, научите
Код: Выделить всё
# top | grep php-cgi
1771 php 1 4 0 20516K 12464K accept 1 0:00 0.20% php-cgi
1772 php 1 4 0 20516K 12284K accept 1 0:00 0.10% php-cgi
Код: Выделить всё
-su-2.05b# top | grep php-cgi
70551 www 1 4 0 11920K 7808K accept 0:05 0.93% php-cgi
69187 www 1 4 0 11912K 7840K accept 0:06 0.68% php-cgi
70952 www 1 4 0 11992K 8156K accept 1:52 0.59% php-cgi
70933 www 1 4 0 11948K 8100K accept 1:51 0.54% php-cgi
78177 www 1 4 0 11880K 7760K accept 0:02 0.10% php-cgi
не много разные конфигурации пхп, поэтому разный расход памяти
Re: Прожорливый Apache
Добавлено: 2008-06-19 3:04:09
ProFTP
а че у меня
а у вас
???
сколько должно быть??
делал по статье, глюк где-то?
Re: Прожорливый Apache
Добавлено: 2008-06-19 3:07:21
ProFTP
salvator, что именно в конфиге, модули к пхп? у меня минимум
Код: Выделить всё
extension=simplexml.so
extension=spl.so
extension=mysqli.so
extension=snmp.so
extension=mbstring.so
extension=mysql.so
extension=pcre.so
extension=xml.so
extension=xslt.so
extension=xslt.so
extension=bz2.so
extension=mcrypt.so
extension=session.so
extension=zlib.so
extension=openssl.so
extension=tokenizer.so
extension=pdf.so
extension=gd.so
extension=ctype.so
extension=sqlite.so
extension=overload.so
extension=pspell.so
extension=xml.so
из-за этого может быть?
Код: Выделить всё
$ php --ini
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/xslt.so' - Cannot open "/usr/local/lib/php/20060613/xslt.so" in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/xslt.so' - Cannot open "/usr/local/lib/php/20060613/xslt.so" in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/xslt.so' - Cannot open "/usr/local/lib/php/20060613/xslt.so" in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/xslt.so' - Cannot open "/usr/local/lib/php/20060613/xslt.so" in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/overload.so' - Cannot open "/usr/local/lib/php/20060613/overload.so" in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/overload.so' - Cannot open "/usr/local/lib/php/20060613/overload.so" in Unknown on line 0
PHP Warning: Module 'xml' already loaded in Unknown on line 0
Warning: Module 'xml' already loaded in Unknown on line 0
Re: Прожорливый Apache
Добавлено: 2008-06-19 6:28:18
zingel
пересобрать xslt из порта /usr/ports/textproc/php4-xslt и дать сюда вывод команды:
Что, Nginx настолько круче апача, что стоит себе заимет немного гемора что бы его установить и настроить????
круче апача только апачь, нджинкс нужен для разгрузки апача и кеширования контента, гемора никакого нет, все делается очень просто.
вот листинг top по юзеру www ну и плюс один процес от рута.
Наcтройте параметры mpm-prefork && worker
Код: Выделить всё
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 10
MaxRequestsPerChild 4000
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ServerLimit 256
StartServers 15
MinSpareServers 15
MaxSpareServers 20
MaxClients 200
MaxRequestsPerChild 500
Re: Прожорливый Apache
Добавлено: 2008-06-19 11:18:13
ProFTP
поставил еще
я xslt.so удалил сейчас из конфига, остальное подпраивbл, ничего не изменилось, или он нужен xslt.so?
забыл сказать, apache2.2.8, возможно из-за него
вот нашел может так и надо:
http://forum.ixbt.com/topic.cgi?id=76:7848
сказали меньше сделать ThreadStackSize
Код: Выделить всё
apachectl -V
Server version: Apache/2.2.8 (FreeBSD)
Server built: May 14 2008 11:30:05
Server's Module Magic Number: 20051115:11
Server loaded: APR 1.2.8, APR-Util 1.2.8
Compiled using: APR 1.2.8, APR-Util 1.2.8
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr/local"
-D SUEXEC_BIN="/usr/local/sbin/suexec"
-D DEFAULT_PIDLOG="/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="/var/run/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/accept.lock"
-D DEFAULT_ERRORLOG="/var/log/httpd-error.log"
-D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
-D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"
Yegg
ситуация начинае прояснятся. оказывается - каждые 8МБ памяти это выделенный стэк, как и описал pluknet - для одного thread'a апача.
Да, похоже что так. Собственно, стековый регион памяти - это надмножество анонимной памяти с доступом как минимум PROT_READ и PROT_WRITE. Так что всё сходится.
задача поставить минимально необоходимый чтобы выжать максимальное кол-во тредов.
Имхо, это не возымеет ожидаемый эффект. ThreadStackSize задает максимально возможный размер региона памяти стекового типа. Реальное выделение памяти происходит в момент обращения к новым, непроинициализированным страницам.
интересует также чем чьеревато черезмерное уменьшение стека.
stack overflow со всеми вытекающими. Как правило, процесс получает SIGSEGV (ошибка сегментации).
P.S. Пища для размышлений.
Процессы в некоторых случаях могут интенсивно использовать стек, для чего может потребоваться стек соответствущего размера. Количество виртуальной памяти, отдаваемой под стек, жестко устанавливается в момент инициализации процесса и не может быть изменено. Проблема в том, что безопасное изменение размера стека невозможно, так как новый сегмент стека может перекрыть соседний сегмент, в сторону которого растёт стек. В качестве воркэраунда производится перезапуск процесса (как правило, через семейство exec*()) с указанием об инициализации стека необходимого размера.
Добавление от 20.02.2008 02:03:
a higher number of threads per child process will be achievable if ThreadStackSize is set to a value lower than the operating system default
Видимо, речь об ограниченном размере виртуальной памяти.
Добавление от 20.02.2008 02:21:
Yegg
оказывается - каждые 8МБ памяти это выделенный стэк, как и описал pluknet - для одного thread'a апача.
Тогда всё намного проще: новому треду назначается размер стека через pthread_attr_setstack()/pthread_attr_setstacksize().
В конечном итоге, всё равно дело сводится к выделению стекового региона памяти через mmap()
Добавление от 20.02.2008 02:30:
8МБ под стэк это конечно ЖЕСТКО.
К слову, в FreeBSD и Солярисе умолчальный размер стека для 32- и 64-битных архитектур 1 и 2 мбайта соответственно.
В linux AFAIK тоже самое, не проверял
еще может быть ошибка сегментации, но я ее не вижу...