Доброго времени суток!
извините что к Вам обращаюсь, есть много похожих тем но... одним словом Drupal, большой и прожорливый Drupal. Жрет память. С чем это может быть связано? Ума не приложу.
Буду благодарен любому дельному совету.
Ниже исходные данные
FreeBSD 8.1-RELEASE amd64
# apachectl -v
Server version: Apache/2.2.17 (FreeBSD)
Server built: Jan 19 2011 14:26:11
worker-mpm
MySQL 5.5.8
# nginx -v
nginx version: nginx/0.8.54
в апаче
StartServers 4
MaxClients 600
MinSpareThreads 30
MaxSpareThreads 500
ThreadsPerChild 50
MaxRequestsPerChild 10000
ServerLimit 500
last pid: 62623; load averages: 0.28, 0.32, 0.38 up 0+16:37:11 15:19:55
288 processes: 1 running, 287 sleeping
CPU: 3.1% user, 0.0% nice, 0.7% system, 0.2% interrupt, 96.1% idle
Mem: 699M Active, 1427M Inact, 968M Wired, 81M Cache, 827M Buf, 4731M Free
Swap: 8192M Total, 8192M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
62569 www 52 44 0 789M 523M accept 1 3:41 12.35% httpd
62570 www 52 44 0 739M 473M accept 1 3:03 3.91% httpd
43094 mysql 24 44 0 2730M 362M ucond 2 2:47 0.00% mysqld
61862 www 1 44 0 27296K 6348K kqread 1 0:25 0.00% nginx
61860 www 1 44 0 27296K 6500K kqread 2 0:22 0.00% nginx
61861 www 1 44 0 27296K 6024K kqread 0 0:17 0.00% nginx
43104 nobody 6 76 0 58876K 31764K ucond 2 0:02 0.00% memcached
62491 root 1 44 0 402M 22976K select 0 0:01 0.00% httpd
55811 ******* 1 44 0 38104K 4028K select 2 0:01 0.00% sshd
юзаеться арс для опкод кеширования
версия 3.0.19
весь софт из портов
PHP Version 5.2.17
CPU: Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz (2666.63-MHz K8-class CPU)
real memory = 8589934592 (8192 MB)
Комментарии
http://liberatum.ru/forum/podkhodit-li-drupal-dlya-internet-magazina - в этой теме, довольно короткой, есть несколько постов по этому вопросу. Автор подробно не излагает, но, если Вы попробуете связаться с ним посредством личных сообщений или другим способом, может он Вам подскажет, в какую сторону двигаться, ибо сам он уже этот вопрос решил.
Либо можно спросить непосредственно в той теме.
Как я понимаю, он - админ того сайта (liberatum.ru).
Желаю удачи.
Чета я не вижу, где именно Drupal там "жрет" память?
хостеры сетуют на то, что процессы апача по 400-500М вместо 20М и память не полностью потом чистится, что приводит со временем к печальным последствиям.
цитирую буквально:
"каждый процес апача должен жрать ну 20мб максимум...
а тут по 400 по 500"
Ну так это скорее всего либо кривой модуль, написанный криво. Либо просто недонастроенный WEB-сервер.
а есть список модулей на drupal.org, замеченных в кривизне? время от времени провожу ревизию, и потихоньку избавляюсь от излишнего функционала, но подозревать кривой или нет, фактически можно любой модуль.
второй момент, программируя на пхп, до знакомства с drupal, вообще не слышал про утечки памяти. Нет, ну понятно, что код как и у всех поначалу)), потом набираешься опыта, перенимаешь какие-то правила и т.д. Но сам подход пхп - не зависеть от платформы... открыл, прочитал, закрыл - все(утрирую). Пхп это же не Си, где выделяешь память, потом освобождаешь. пхп-шнику не пофиг, какой механизм освобождает память? ну не закрыл соединение, ну и фиг с ним, по таймауту сбросится, накосячил с циклом, глянул ошибки, исправил, но тут капец, все работает, в логах чисто, а память "течет". Так может и паранойя появиться от http://drupal.org/project/modules))
модуль Drupal? как его определить?
в какую сторону его донастроить?
поставьте eaccelerator и вопросы будут решены.
Кстати, очень похоже, что у вас php сконфигурирован как cgi, лучше перекомпилить его как модуль к apache.
А что это у вас за звездолет такой? для каких целей, если не секрет?
MaxRequestsPerChild 10000 - можно попробовать чутка уменьшить, например до 5000 ну и вот эти цифры реально смущают:
MinSpareThreads 30
MaxSpareThreads 500
если даже взять по 500 * 20M - то получится 10ть гигов оперативы, а у вас ее явно меньше...
ТС написал, что использует APC. Так что вопрос не будет решён заменой APC на eaccelerator.
А вот что действительно может помочь это установка модуля Devel что бы узнать сколько памяти кушает друпал и потом уже с помощью какого-нить дебагера, например Xdebug проверить где именно происходят такие траты памяти.
про APC проглядел :), но вот не уверен, что devel поможет на шару. даже если он и покажет, что drupal жрет, то и что толку, он ведь не скажет кто виноват...
Options for php52 5.2.17 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦[X] CLI Build CLI version ¦ ¦
¦ ¦[X] CGI Build CGI version ¦ ¦
¦ ¦[X] APACHE Build Apache module ¦ ¦
¦ ¦[ ] DEBUG Enable debug ¦ ¦
¦ ¦[X] SUHOSIN Enable Suhosin protection system (not for jails) ¦ ¦
¦ ¦[ ] MULTIBYTE Enable zend multibyte support ¦ ¦
¦ ¦[ ] IPV6 Enable ipv6 support ¦ ¦
¦ ¦[ ] MAILHEAD Enable mail header patch ¦ ¦
¦ ¦[X] REDIRECT Enable force-cgi-redirect support (CGI only) ¦ ¦
¦ ¦[X] DISCARD Enable discard-path support (CGI only) ¦ ¦
¦ ¦[X] FASTCGI Enable fastcgi support (CGI only) ¦ ¦
¦ ¦[X] FPM Enable fastcgi process manager (CGI only) ¦ ¦
¦ ¦[X] PATHINFO Enable path-info-check support (CGI only)
отак собран пхп
конф воркера теперь такой
StartServers 4
MaxClients 600
MinSpareThreads 30
MaxSpareThreads 250
ThreadsPerChild 50
MaxRequestsPerChild 5000
ServerLimit 500
last pid: 1955; load averages: 0.22, 0.21, 0.17 up 0+01:03:29 22:15:01
269 processes: 1 running, 268 sleeping
CPU: 4.9% user, 0.0% nice, 2.3% system, 0.2% interrupt, 92.6% idle
Mem: 360M Active, 521M Inact, 687M Wired, 400K Cache, 741M Buf, 6339M Free
Swap: 8192M Total, 8192M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
1852 www 52 44 0 648M 358M accept 2 0:32 5.13% httpd
1851 www 52 44 0 534M 243M accept 2 0:10 4.49% httpd
1518 mysql 23 44 0 2653M 196M ucond 2 1:02 0.00% mysqld
1849 www 52 76 0 404M 127M accept 3 0:05 0.00% httpd
1060 www 1 44 0 25248K 7076K kqread 2 0:04 0.00% nginx
1058 www 1 44 0 27296K 7252K kqread 1 0:03 0.00% nginx
1059 www 1 44 0 25248K 6940K kqread 0 0:02 0.00% nginx
1850 www 52 76 0 398M 99M accept 0 0:01 0.00% httpd
1660 ******* 1 44 0 38104K 5248K select 1 0:00 0.00% sshd
1848 root 1 44 0 365M 25008K select 2 0:00 0.00% httpd
127 коннектов
я конечно не эксперт по установке php, но тут чувствуется, что он сконфигурирован как CGI, а не расширение к apache.
честно говоря я не работал с FreeBSD, поэтому у меня нет мануала, как поставить php как модуль к апачу, советую погуглить на эти ключевым словам - install on FreeBSD php-mod apache
вывод phpinfo можете показать?
и /server-status у апача
и кстати, а зачем так много процессов апачевских?
у вас вся статика и неавторизованные должны идти через ngnix
P.S. и кстати, да, я в своё время пересобирал apache на FreeBSD именно для этого (чтобы не CGI был, а mod_). Я забыл, кстати, вставить FreeType Support, вы не забудьте
Да тут 2 процесса с 10 детьми должно хватить мне кажется (если apache за nginx спрятать)
UPD. 2-3 процесса на сайте достаточно.
nginx используется в качестве реверсного проксирования
как пересоберете php и перезапустите апач, снимите показания и в студию их. Мы коллоквиум устроим (эко я после интернов мысли излагать забавно стал
есть результаты?
пока нету
копаю на эту тему на drupal.org, волосы шевелятся
http://drupal.org/node/736440 CCK
http://drupal.org/node/648266 Token, Pathauto
...................
не там копаете. оптимизируйте свой сервер. я когда начал потихоньку разбираться с оптимизацией реально ощутил пользу даже от того, что просто перешел с MyISAM на InnoDB!
Не думаю что причиной таких проблем явно не в Друпал. Не вчера ее сделали. А вот хостинг тюнить можно долго.
Всегда виноват друпал!
Стандартые конфиги VPS пишутся святыми.
Так же, иногда такие конфиги страчать приходится, что волосы на жопе шевелиться начинают.
Попался на днях в руки сервант, на серванте тяжёлый сайт с 1500 просмотрами, но рамы катастрофически не хватает.
Что сделал первым делом оптимизатор?
Он увеличил кеш запросов до 512 мегабайт, сказал что для посещаемого сайта стоявшие 128 метров слишком мало.
Оперативы стало ещё меньше, падать стало чаще. Я сказал что на fermer.ru вообще 64 метра и как-то держит 150 000 просмотров по LI, оптимизатор так и не ответил...
MinSpareThreads 30
MaxSpareThreads 250
поменяйте на
MinSpareThreads 10
MaxSpareThreads 20
а то как то больно на это смотреть...
что там с перекомпилированием php?
перешли на
apache 2.2.17 prefork-mpm
и PHP 5.3.5
топ дадим под нагрузкой
а чем вам worker то не угодил?
PHP 5.3.5 - не катит для drupal 6, у него требование к php быть не выше 5.2.х
последняя версия ядра 6-ки катит. а вот с модулями могут быть проблемы. а могут и не быть.
ну и для пятерки тоже самое, для семерки такого ограничения нет. шестерка сама по себе тоже сейчас поддерживает 5.3.х, но вот дополнительные модули не все, могут быть проблемы, так что если вы пользуете 6ку или 5ку, то откатитесь к php 5.2.х
тестируем...
PS траблы были пока только с swftools но вовремя попался нужный патч
и вообще мне кажется, что вот эти параметры чересчур задраны
по-моему, здесь всего слишком много
512 МБ изврат, но 64 МБ явно мало. Увеличение query_cache и table_cache с одновременным уменьшением max_heap_table и tmp_table позволяет остановить рост временных таблиц и получить qcache_lowmem_prunes=0.
Не перебор?
Вот такое вот счастье у меня на VPS
top - 19:38:34 up 20 min, 1 user, load average: 0.07, 0.02, 0.00
Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1029508k total, 462660k used, 566848k free, 16956k buffers
Swap: 524280k total, 0k used, 524280k free, 172484k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2353 mysql 20 0 514m 114m 6288 S 0 11.4 0:03.45 mysqld
5210 www-data 20 0 91912 44m 28m S 0 4.4 0:02.50 apache2
5211 www-data 20 0 94328 38m 20m S 0 3.8 0:00.98 apache2
5212 www-data 20 0 94064 37m 19m S 0 3.7 0:00.86 apache2
5214 www-data 20 0 90504 35m 21m S 0 3.5 0:01.13 apache2
5213 www-data 20 0 90420 34m 19m S 0 3.4 0:00.90 apache2
2677 www-data 20 0 52964 16m 684 S 0 1.6 0:00.05 memcached
5206 root 20 0 80812 10m 6596 S 0 1.1 0:00.22 apache2
2720 root 20 0 12924 8784 1488 S 0 0.9 0:00.01 miniserv.pl
2701 www-data 20 0 43672 8252 684 S 0 0.8 0:00.01 memcached
2681 www-data 20 0 41804 7256 684 S 0 0.7 0:00.02 memcached
2683 www-data 20 0 41640 6156 676 S 0 0.6 0:00.00 memcached
2707 www-data 20 0 38708 3064 676 S 0 0.3 0:00.00 memcached
2757 root 20 0 8164 2648 2096 S 0 0.3 0:00.08 sshd
2716 postfix 20 0 6096 2504 1796 S 0 0.2 0:00.01 tlsmgr
2679 www-data 20 0 37688 2032 676 S 0 0.2 0:00.00 memcached
фронтом - nginx, бакендом - apache, для ускорения работает eaccelerator + memcached, база - mysql
на какой оси у Вас крутится?
На Unix. Какая разница? (vps на Freebd не делают, значит Linux)
Вообще то делают. Смотри FirstVDS.
я почему спросил, в топе несколько процессов memcached, очевидно конфиг через bins. В фри несколько другой подход?
ubuntu 10
Ухты, раньше не было.
а всё-таки, чего status апача показывает?
StartServers 2
MaxClients 800
MinSpareThreads 30
MaxSpareThreads 500
ThreadsPerChild 50
MaxRequestsPerChild 10000
ServerLimit 800
last pid: 2284; load averages: 0.40, 0.38, 0.40 up 0+02:30:54 22:54:47
93 processes: 93 sleeping
CPU: 16.3% user, 0.0% nice, 2.8% system, 0.2% interrupt, 80.7% idle
Mem: 1231M Active, 2227M Inact, 839M Wired, 7128K Cache, 827M Buf, 3603M Free
Swap: 8192M Total, 8192M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
1767 www 2 44 0 390M 174M nanslp 1 3:50 10.35% /usr/lo
1766 www 2 44 0 388M 173M nanslp 1 3:57 7.76% /usr/lo
1783 www 2 44 0 392M 183M nanslp 0 2:16 5.57% /usr/lo
1792 www 2 44 0 386M 169M nanslp 3 2:19 5.18% /usr/lo
1786 www 2 44 0 394M 180M nanslp 1 3:11 4.79% /usr/lo
1791 www 2 44 0 393M 182M nanslp 0 2:57 4.59% /usr/lo
1819 www 2 44 0 391M 204M nanslp 0 3:29 2.20% /usr/lo
1787 www 2 44 0 389M 171M nanslp 0 3:45 1.95% /usr/lo
1771 www 2 44 0 383M 167M nanslp 1 2:56 1.86% /usr/lo
1796 www 2 44 0 388M 175M nanslp 1 2:25 1.76% /usr/lo
1803 www 2 44 0 391M 178M nanslp 0 2:05 0.20% /usr/lo
1590 mysql 24 44 0 2914M 905M ucond 0 7:06 0.10% [mysqld
1769 www 2 44 0 390M 174M nanslp 3 3:22 0.00% /usr/lo
1817 www 2 44 0 387M 175M nanslp 0 2:53 0.00% /usr/lo
1798 www 2 44 0 394M 175M nanslp 1 2:53 0.00% /usr/lo
1826 www 2 44 0 390M 179M nanslp 1 2:40 0.00% /usr/lo
1608 nobody 6 76 0 107M 63372K ucond 2 0:18 0.00% /usr/lo
1059 www 1 44 0 33440K 14060K biord 1 0:15 0.00% nginx:
1060 www 1 44 0 31392K 13084K kqread 0 0:13 0.00% nginx:
1058 www 1 44 0 31392K 13200K kqread 0 0:10 0.00% nginx: