Причины медленной работы Drupal 7

Главные вкладки

Аватар пользователя mrfreeman02 mrfreeman02 16 сентября 2011 в 10:22

Вчера решил попробовать Drupal 7, даже во время установки заметил что система очень сильно тормозит сайт устанавливался минут 15-20, после тога как установка закончилась подсчитал что страницы генерируются очень долго в среднем это 15-20 c. когда на том же самом сервере Drupal 6 работает в 60 раз быстрее, генерация проходит за 0.3-0.4 секунды.

Веб-сервер

Apache/2.2.15 (Linux/SUSE)
Версия MySQL-клиента: 5.1.36

MySQL

Сервер: Localhost via UNIX socket
Версия сервера: 5.1.46-log

PHP

http://77.79.161.87/phpinfo.php

Заранее благодарен тому кто знает в чем причина, 7 мне нравится но с такой производительностью ни куда не годится

Комментарии

Аватар пользователя anartist anartist 16 сентября 2011 в 10:40

Вот и у меня из-за этого желание с семёркой работать пропало. Правда, пробовал её на "Денвере", и на слабом компьютере. Подожду. Может, что и изменится.

Аватар пользователя vgoodvin vgoodvin 16 сентября 2011 в 13:50

Жесткий диск сильно дербанит?
Я наткнулся на подобную проблему с семеркой на Ubuntu и на ArchLinux. На FreeBSD все работает нормально. Источник проблемы - InnoDB. Поконкретней сказать не могу. Как решить, продолжая при этом использовать InnoDB, не знаю. Странно что не нашел в сети хоть одного конкретного ответа. Для самостоятельного изучения проблемы не хватает навыков, времени и собственно желания.
Попробуйте прописать в my.cnf строку skip-innodb и переустановить семерку. Если после этого заработает нормально, значит у вас то же, что и у меня. Но "skip-innodb" - это, думаю, не решение проблемы.

Аватар пользователя bsyomov bsyomov 16 сентября 2011 в 21:52

D7 медленее 6, но не на столько. Т.е. такая ситуация не нормальна. mytop, iotop и.т.п. вам в помощь.
Также неплохо было бы воспользоваться профайлером - вам надо найти где узкое место.
По преведённой инфе:
eAccelerator
Memory Size 16,777,144 Bytes
Memory Available 280 Bytes
Memory Allocated 16,776,864 Bytes
Cached Scripts 97
Вот это несколько странно - всего 97 скриптов забили вам все 16 метров кеша (кстати 16mb это достаточно мало, хотя бы удвойте).
Посмотрите настройки innodb, посмотрите использование кеша запросов mysql.

Ну и до кучи перед апачем надо ставить фронтэнд, который будет отдавать статику, или использовать хотя бы php как fcgi.

П.С. Вам админ хороший поможет, который сможет нормально настроить сервер. Сервера не настраиваются по хаутушкам в инете. Smile Если что - обращайтесь.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 16 сентября 2011 в 22:07

"vgoodvin" wrote:
Я наткнулся на подобную проблему с семеркой на Ubuntu и на ArchLinux. На FreeBSD все работает нормально. Источник проблемы - InnoDB. Поконкретней сказать не могу. Как решить, продолжая при этом использовать InnoDB, не знаю. Странно что не нашел в сети хоть одного конкретного ответа. Для самостоятельного изучения проблемы не хватает навыков, времени и собственно желания.

Думаю это бинарные логи
"bsyomov" wrote:
D7 медленее 6, но не на столько.

Могу показать обратное

Аватар пользователя bsyomov bsyomov 16 сентября 2011 в 23:04

Возможно, т.к. в моём случае, это скорее ощущение, чем тестирование под нагрузкой идентичных проектов.

Аватар пользователя dvman dvman 30 апреля 2012 в 11:42

В слакваре эта проблема решается просто - cp my-huge.cnf my.cnf
my-huge.cnf - конфигурация оптимизирована для вери лардж системс )))
ясно, что дело в установленных лимитах памяти, но разбираться каких именно - времени нет
раньше один только импорт интерфейса для 7-ки занимал 25 минут, теперь вся установка занимает 34 секунды

вот конфиг, если кому надо

[client]
#password = your_password
port = 3306
socket = /var/run/mysql/mysql.sock

[mysqld]
port = 3306
socket = /var/run/mysql/mysql.sock
skip-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M

# Try number of CPU's*2 for thread_concurrency. У меня 2-процессорный ноут. поставил значение = 4
thread_concurrency = 4

log-bin=mysql-bin
binlog_format=mixed
server-id = 1

innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

no-auto-rehash

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Аватар пользователя bsyomov bsyomov 30 апреля 2012 в 12:15

На самом деле, дело в первую очередь не в лимитах как таковых, а в том, что в этом конфиге настраивается innodb.
Реально, конфиг в таком состоянии даст большой пререрасход памяти. Настраивать надо с умом, а не от балды.

"dvman" wrote:
чего сделай?

diff даёт разницу между двумя файлами. Smile
man diff

Кстати, вернувшись к быстродействию 7, теперь я пожалуй уже соглашусь, что в среднем всё стало действительно лучше.
В правильно приготовленном окружении, особенно.

Аватар пользователя dvman dvman 10 ноября 2015 в 11:48

осваиваю убунту. пятый день пытаюсь настроить LAMP так , чтобы данная картинка
не висела 15 минут. что такого волшебного надо прописать в конфигах РНР и апач , чтоб нормально заработало?

Аватар пользователя drupby drupby 30 мая 2012 в 20:45

"dvman" wrote:
осваиваю убунту. пятый день пытаюсь настроить LAMP так , чтобы данная картинка
не висела 15 минут. что такого волшебного надо прописать в конфигах РНР и апач , чтоб нормально заработало?

попробуй в mysql в my.cnf строку innodb_flush_log_at_trx_commit=1
раскомментировать и изменить на innodb_flush_log_at_trx_commit=2