Друпалу нужно 300 запросов для генерации одной простой странички. На сервере довольно загруженный MySQL, поэтому наблюдаются тормоза. Можно ли как-нибудь значительно сократить количество запросов к базе у Друпала?
Если есть возможность настраивать MySQL, то попробуйте включить кеш запросов. Конфигурационный файл MySQL называется my.cnf. Например, у VPS на FreeBSD + VDSManager обычно лежит в каталоге /etc
Ещё добавьте
query_cache_type=1
Иначе кэшироваться будут только те запросы, для которых оно разрешено. При установке этой строчки будут кэшироваться все, кроме тех, для которых оно запрещено.
Например на нашем хостинге - HostimVse.Ru (простите за рекламу) есть возможность использовать для кеширования Memcached. Тоесть держать кеш в оперативной памяти. Но это актуально только для сайтов с высокой посещаемостью. Не знаю как Drupal, но думаю он тоже должен поддерживать кеширование. Не обязательно именно MySQL запросов, можно просто закешировать страницы целяком.
Довольно действенной мерой может быть использование memcached для запросов к cache_* таблицам. Есть модули для этого. Можно таблицу sessions перевести в тип innodb, если есть проблемы с блокировками. Вообще надо анализировать MySQL, включить slow_query_log и binlog, использовать для их анализа mysqlsla, погонять tuner-primer.sh и mysqltuner.pl, поправить конфиг.
Часто можно использовать кеширование, у друпала есть целый ряд модулей на эту тему: boost, authcache, cacherouter и др.
Ответы
Если есть возможность настраивать MySQL, то попробуйте включить кеш запросов. Конфигурационный файл MySQL называется my.cnf. Например, у VPS на FreeBSD + VDSManager обычно лежит в каталоге /etc
Зачастую туда нужно дописать одну строчку
query_cache_size = 50M
Статья на тему кеширования в MySQL - http://habrahabr.ru/blogs/mysql/41166/
Ещё добавьте
query_cache_type=1
Иначе кэшироваться будут только те запросы, для которых оно разрешено. При установке этой строчки будут кэшироваться все, кроме тех, для которых оно запрещено.
Например на нашем хостинге - HostimVse.Ru (простите за рекламу) есть возможность использовать для кеширования Memcached. Тоесть держать кеш в оперативной памяти. Но это актуально только для сайтов с высокой посещаемостью. Не знаю как Drupal, но думаю он тоже должен поддерживать кеширование. Не обязательно именно MySQL запросов, можно просто закешировать страницы целяком.
Довольно действенной мерой может быть использование memcached для запросов к cache_* таблицам. Есть модули для этого. Можно таблицу sessions перевести в тип innodb, если есть проблемы с блокировками. Вообще надо анализировать MySQL, включить slow_query_log и binlog, использовать для их анализа mysqlsla, погонять tuner-primer.sh и mysqltuner.pl, поправить конфиг.
Часто можно использовать кеширование, у друпала есть целый ряд модулей на эту тему: boost, authcache, cacherouter и др.
1. настойка mysql;
2. кеш.
Отправить комментарий