Оптимизация Drupal

Сообщение об ошибке

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls в функции menu_set_active_trail() (строка 2405 в файле /var/www/notes7/includes/menu.inc).

Для начала: производительность - это то, на сколько быстро ваш сайт отвечает на запрос.

Проблемы с производительностью могут возникнуть по одному или нескольким направлениям:

  • загрузка центрального процессора
  • количество свободной оперативной памяти
  • проблема ввода-вывода
  • ширина полосы пропуская сети

 А теперь, некоторые способы увеличения быстродействия.

  • Разгрузка центрального процессора за счет оптимизации PHP кода.

       Тут есть 2 варианта.

  1. Первый состоит в том, чтобы уменьшить количество самого кода или увеличить его эффективность. Что нам конечно же не подходит т.к. мы используем только все необходимые модули.
  2. Кешировать результат выполнения PHP скрипта в скомпилированном состоянии. Как вариант можно поставить eAccelerator.
  • В случае нехватки оперативной памяти.

       Опять же, на сколько я понял, ключевыми являются две директивы, объявленные в файле httpd.conf: MaxClients и MaxRequestsPerChild.

          MaxClients означает количество залогинившихся или анонимных пользователей, с которыми будет работать веб сервер (остальные ждут своего часа).  Чтобы подсчетать примерное количество: запускаем команду top или ps и делим количество оперативной памяти на среднее количество памяти потребляемое процессами httpd.

          MaxRequestsPerChild означает время жизни отведенное на дочерний процесс, такой как httpd. Я выставил значение равное 300 (5мин)

  • Ускорение работы СУБД. В моем случае MySQL.

       В MySQL имеется возможность кешировать наиболее часто встречающиеся запросы в оперативной памяти. Для этого необходимо включить опцию query_cache_type и установить query_cache_size в значение большее нуля. Хорошая статья тут.

       Еще одним способом является перевод типа таблицы с MyISAM на InnoDB. По умолчанию Drupal использует таблицы типа MyISAM. Различия между этими типами заключается в том, какую блокировку они используют. Т.е. если в запросе необходимо вставить или обновить строку (например, новый комментарий) в случае MyISAM блокируется вся таблица до завершения выполнения команды, а в случае InnoDB только конкретная строка в таблице. В результате в случае MyISAM чтение таблицы происходит быстрее, однако , в случае InnoBD отсутствуют (практически) моменты, когда таблица недоступна в связи с блокировкой. Видимо, это первое . что следует сделать при создании хорошего форума на Drupal

Добавить комментарий

CAPTCHA