Добрый день, уважаемая публика!
Хочу на VPS поднять Drupal 7 Commerce2...
Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 2393.892 Mhz
RAM 1Gb, HDD 15Gb
Debian 2.6.32-6-pve i686, Apache 2.2.16, Nginx 1.2.4, MySQL 5.1.66-0, PHP 5.3.3-7, Zend 2.3.0, with Suhosin 0.9.32.1
В свободном полёте 400мб озу всегда свободно
Вообщем когда начинаю устанавливать Д7 и потом ходить по админке и сайта
память сжирается сразу вся ( до 120Мб на процесс апача) и загружка процессора от 60% на установке и до 30% во время сёрфинга по сайту...
Drupal 6 летает "на ура" и нет никаких тормозов и сжираний ресурсов.
PS: причём перепробовал все свежие движки магазинов и cms - нигде такого сжирания ресурсов и процессора не наблюдалось!
Вот мои настройки сервисов, просьба сильно не пинать, пытался сам по документации настроить
apache.conf
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 1
MaxSpareServers 2
MaxClients 10
MaxRequestsPerChild 200
</IfModule>
my.conf
flush_time = 300
key_buffer = 64M
key_buffer_size = 128M
key_cache_division_limit= 70
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8M
max_heap_table_size = 48M
tmp_table_size = 48M
read_rnd_buffer_size = 384K
sort_buffer_size = 384K
join_buffer_size = 384K
myisam-recover = BACKUP
max_connections = 50
table_cache = 512M
query_cache_limit = 16M
query_cache_size = 48M
long_query_time = 1
log-queries-not-using-indexes
expire_logs_days = 7
max_binlog_size = 100M
default-character-set = utf8
innodb_buffer_pool_size = 64M
[geshifilter-mysql] default-character-set = utf8 [isamchk] key_buffer = 16M
[/geshifilter-mysql]
Комментарии
Timeout 15
KeepAlive Off
Потому что у Вас стоит nginx.
Вы думаете это решит мою проблему? Поменял, наблюдаю...
Вероятнее всего не решит, однако это одна из ошибок
А на кой Вам вообще сдался апач? Так сильно нужен phpmyadmin(на продакшене им в идеале и пахнуть не должно) или прогрессбар при загрузке файлов?
А чем Вам индеец не угодил?
2 полноценных веб демона, без причины, смысла жить вместе не имеют IMHO
З.Ы. php-fpm ресурсов жрет заметно меньше, чем apace+mod-php
Акселератор стоит ? Проверьте, что в нем свободная память есть. Если памяти нехватает, такие эффекты могут быть.
Обоснование последует?
*h пропустил
+1 стоит поставить и настроить, потребление памяти уменьшится.
Тесты, графики? Или это просто предположение?
Графиков не рисовал, но коли так интересно - ими половина интернетов забита, попробуйте ради интереса на виртуалке apache+php-mod+nginx против nginx+php-fpm, согласен, ресурсов там будет заметно меньше, но и разница будет заметна невооруженным глазом.
Просто сам не так давно переместился с apache сперва на связку apache+nginx, а потом попробовал просто nginx без апача - понравилось.
Чтоб понятней было - разницы между apache+nginx и apache при малом числе пользователей почти нет.
Очень сомнительное утверждение.
Читаю ежедневно.
Кроме утверждения лучше, потому что мне понравилось ничего не видел.
Поэтому считаю что под некоторые задачи подходит php-fpm + nginx, под другие nginx + mod_php.
не совсем верно, php-fpm + nginx против nginx + apache + mod_php, в 1м случае статику отдает nginx, за пых отвечает php-fpm, во втором статику опять же nginx, а вот за пых, mod_php, который, в свою очередь, работает через индейца, на кой тут сдался индеец со всеми своими наворотами, я лично, не совсем понимаю.
Индеец нужен если Вам необходимы его модули, одним из которых и является mod_php
Ну т.е. стартует индеец, вызывает все подключенные модули, отрабатывает их, ищет .htaccess(если у Вас он не скопирован в конфиги), а это все и память и проц, и только после этого вызовет mod_php, который не сильно отличается от одинокого php-fpm
Ну и вот тогда еще один холиварный вопрос: что менее ресурсоемко - сокет или тсп?
Виртуальный сервер(OVB) на домашнем компе на nginx работает в полтора раза быстрее(одна ОС, один и тот же сайт), чем apache на полудохлом арендованном сервере(правда конфигурация у этого сервера не сильно отличается от моего домашнего, т.е. десктопный вариант, но характеристики заметно выше, чем у виртуального), если бы не это маленькое наблюдение, я бы молчал.
Отключаете на apache ненужные модули, получаете стабильную работу php с минимальными утечками памяти и нормально работающим опкоде-кэшем.
Вот накой он там нужен.
Который уже находиться в памяти и вкомпилирован в apache т.е. произойдёт прямая передача данных в памяти.
Чёэто?
т.е. отключить апач и оставить голый апач и mod-php? зачем?
да нет, он будет вызван при обращении, запустите top ради интереса.
php-fpm отдельный демон, по сути тот же mod-php, только без апача, т.е. самостоятельный, к тому же может работать и через сокет, в отличии от апача.
огого расшевелились
APC стоит, в данный момент стоит 1Гб ОЗУ (+1Гб swap), но вот хотелось бы сэкономить и на 512 вернуться... но я смотрю что может и не хватить
Прилагаю картинку скриншот, во время доступа на сайт - пик загрузки на 1-2 секунды - а переполненные процессы так и висят
у Вас там скорее проц охреневает, а не память, но в любом случае, php-fpm будет есть её меньше, чем apache+mod-php, однако, проблему с охреневанием процессора это может и не решить, помню у меня была подобная проблема из-за модуля Views_jCarousel, решилась путем его уничтожения и прикручивания js плагина к представлению ручками.
gelfandbein,
то, что APC установлен, еще не означает, что он работает. Например, если нехватает памяти, кеширование отключается частично или полностью. Проверьте хватает ли APC памяти для кеширования всего сайта. Это можно сделать через apc.php,
Сколько вы ему дали памяти ? Даже для 6 Друпала 128МБ для APC бывает нехватает.
не могу найти где APC настраивается... нигде на диске кроме phpmyadmin нет такого файла (apc.php)
для php выделено 128озу
Насколько меньше? Есть цифры?
Сразу спросите автора топика, а настроит ли он isp-панель на nginx+php-fpm?
Зачем ему антивирусник на этом впс?
сколько минут я сижу в туалете я не засекаю и уж тем более не записываю, ибо мне самому это не интересно, однако разница между твердым(апач) и нормальным(энжинкс) стулом заметна на глаз и без секундомеров, но коли уж Вам так это интересно, возьмите с собой секундомер.
судя по
честно говоря, не думаю...
?
З.Ы. мне этот разговор напоминает недавний спор с одним моим приятелем сисадмином "винда рулит - никсы хлам, а IIS вашего индейца маму делал" и при этом тоже ни одного аргумента, кроме "не верю"(с)
Встречный вопрос, а зачем nginx если apache справляется?
VPS настраивал хостер, php-fpm не установлено, соответственно и не настроено... расскажите пожалуйста какую связку настроить и протестировать?
clamav для проверки почты, но это уже мои тараканы и не относится к Drupal
если у Вас все это дело работает через Апач, то логично, что php-fpm и пахнуть не должно. Если не уверены, что сможете настроить ISPManager, и Вам так нужен phpmyadmin, то лучше про php-fpm забыть, ну или поиграться с ним на тестовой машине, авось разберетесь.
Да, кстати, у Вас таблицы в MyISAM?
InnoDB напротив всех полей, а в итоговом столбце - MyISAM
не совсем понял, но судя по конфигам(если они приведены полностью), таблицы на InnoDB у Вас должны еле ползать, попробуйте добавить в my.cnf в раздел [mysqld] строчку "innodb_flush_log_at_trx_commit=0"(без кавычек, либо значение 2, по умолчанию 1, что значит писать лог на диск при каждом чихе, что не совсем благоприятно сказывается на производительности, за то попадает под требования ACID, хотя на сколько помню, друпал 6 не использует транзакции, в код 7 абстрактного слоя бд, честно говоря, не заглядывал, но не думаю, что он их начал использовать, тем более по назначению)
Спасибо, поставил, тестирую.
Может быть db в MYISAM конвертнуть? Напишите желательно как точно и правильно это сделать если возможно
Вот что после рестарта в syslog, может быть поможет..
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Warning] option 'thread_cache_size': unsigned value 8388608 adjusted to 16384
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Warning] option 'table_cache': unsigned value 536870912 adjusted to 524288
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Warning] '--log_slow_queries' is deprecated and will be removed in a future release. Please use ''--slow_query_log'/'--slow_query_log_file'' instead.
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Warning] Changed limits: max_open_files: 1024 max_connections: 50 table_cache: 482
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Note] Plugin 'FEDERATED' is disabled.
Dec 12 01:52:36 mysqld: 121212 1:52:36 InnoDB: Initializing buffer pool, size = 64.0M
Dec 12 01:52:36 mysqld: 121212 1:52:36 InnoDB: Completed initialization of buffer pool
Dec 12 01:52:36 mysqld: 121212 1:52:36 InnoDB: Started; log sequence number 0 2101625482
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Note] Event Scheduler: Loaded 0 events
Dec 12 01:52:36 mysqld: 121212 1:52:36 [Note] /usr/sbin/mysqld: ready for connections.
Dec 12 01:52:36 mysqld: Version: '5.1.66-0+squeeze1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Debian)
Dec 12 01:52:37 /etc/mysql/debian-start[12175]: Upgrading MySQL tables if necessary.
Dec 12 01:52:37 /etc/mysql/debian-start[12178]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Dec 12 01:52:37 /etc/mysql/debian-start[12178]: Looking for 'mysql' as: /usr/bin/mysql
Dec 12 01:52:37 /etc/mysql/debian-start[12178]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Dec 12 01:52:37 /etc/mysql/debian-start[12178]: This installation of MySQL is already upgraded to 5.1.66, use --force if you still need to run mysql_upgrade
Dec 12 01:52:37 /etc/mysql/debian-start[12185]: Checking for insecure root accounts.
Dec 12 01:52:37 /etc/mysql/debian-start[12189]: Triggering myisam-recover for all MyISAM tables
PS: кстати MySQLTuner в STATUSе пишет Storage Engine Statistics +InnoDB -ISAM
Поднял собственно...
General Cache Information
APC Version 3.1.3p1
PHP Version 5.3.3-7+squeeze14
APC Host host
Server Software Apache/2.2.16 (Debian)
Shared Memory 1 Segment(s) with 30.0 MBytes
(mmap memory, pthread mutex locking)
В Вашем случае, все таблицы в базах данных друпала(системные базы данных не трогать) лучше всего переделать как раз таки в InnoDB, если не хотите, чтоб при большом наплыве пользователей Ваш сайт пал жертвой залоченных таблиц.(тут как раз где-то примерно неделю назад кто-то жаловался на это).
Посмотрел логи, после чего заметил в конфиге "table_cache = 512M", Вы реально собрались кешировать 512 миллионов таблиц?(как минимум уберите M) Запись вида, !REG3XP1!> в my.cnf, честно говоря, ранее не встречал.
Убрал М
REG3XP1 - видать что-то в буфере передалось, в конфиге нет.
Соль в том, что 100% от процессора сайт поедать не должен, не зависимо, есть там кеш или нету, apache там или iis. Однако, для входа в подобный ступор причин достаточно. И, кстати, что-то у Вас там больно много процессов апача, в связке с nginx такого быть вроде не должно.
а чего там тестировать? прирост производительности обычно примерно в 100-1000 раз, в зависимости от железа(то по сути был "ручник")
Взял, померил.
Приношу извинения за холивар.
Разницы по времени существенной не заметил, расход памяти меньше.
Ещё заметил пару не очень приятных вещей при использовании apache.
Тоже еще раз померил, тоже ощутимой разницы в цифрах не заметил, хотя на слабом десктопном железе апач почему-то жутко тормозит(в показаниях этого не нашел, либо не тем местом смотрел), особенно самый 1й запрос после рестарта апача(10 секунд, видимо конфиги и модули он подгружает именно после первого обращения к нему после рестарта, причем при старте на холодную(после физического отключения машины), такой фигни не наблюдается), но это не такая страшная проблема. И все же не вижу смысла использовать апач только как прокладку для mod-php, должна быть как минимум одна причина, впрочем, невозможность настроить ISP(если он вообще нужен) под nginx можно считать таковой.
Раньше была проблема шаринга опкоде-кэша (apc,xcache) между потоками php-fpm. Как бы поэтому и юзался апач.
Сейчас ситуация по APC лучше, а вот с xcache не знаю.
Может есть информация об этом?
Честно говоря, даже не пытался, лично меня на данный момент и APC полностью устраивает(ибо я лентяй), но ответ на Ваш вопрос есть тут (посту меньше месяца)