Опубликовано 27/03/2014
Для начала: производительность - это то, на сколько быстро ваш сайт отвечает на запрос.
Проблемы с производительностью могут возникнуть по одному или нескольким направлениям:
- загрузка центрального процессора
- количество свободной оперативной памяти
- проблема ввода-вывода
- ширина полосы пропуская сети
А теперь, некоторые способы увеличения быстродействия.
-
Разгрузка центрального процессора за счет оптимизации PHP кода.
Тут есть 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
Добавить комментарий