Vitalii Zinenko
AltexSoft | Custom Software Development Company
Оптимизация продуктивности Drupal проекта без кеширования
Проблемы:
- все пользователи авторизированы
- большая вариативность контента
- большое количество динамических страниц
Vitalii Zinenko
AltexSoft | Custom Software Development Company
Рассматриваемые варианты решения :
- standart css, js minimization
- Yslow, GTMetric recomendations
- contrib модули кеширования
- php extensions (XCache, APC, eAccelerator)
Vitalii Zinenko
AltexSoft | Custom Software Development Company
RackSpace
Server
Текущая реализация и её недостатки
...
site
site
site
Vitalii Zinenko
AltexSoft | Custom Software Development Company
Первый вариант решения
Vitalii Zinenko
AltexSoft | Custom Software Development Company
Новая реализация
nginx
php5-fpm
mysql
master/slave
Site
Front End
Vitalii Zinenko
AltexSoft | Custom Software Development Company
Новая реализация. Digitalocean
Вопросы новой реализации
- Синхронизация статического контента между php5-fpm и nginx серверами
rsync -a --include-from '/root/bin/include-list.txt' --exclude '*' --prune-empty-dirs
root@10.132.175.231:/var/www/html/drupalcamplviv.net/ /var/www/html/drupalcamplviv.net
include-list.txt
*/
*.js
*.css
*.png
*.gif
*.ico
*.jpg
*.jpeg
*.eot
*.woff
*.ttf
*.svg
/sites/default/files/*
Вопросы новой реализации
2. Получение ещё не синхронизированного контента
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
fastcgi_pass 10.132.26.250:9000;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri @phpfpm;
expires max;
log_not_found off;
}
location @phpfpm {
proxy_pass http://159.203.109.211:9001/$uri;
}
3. Настройка Drupal для использования mysql master-slave
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'mysql-master-db',
'username' => 'mysql-master-username',
'password' => 'mysql-master-password',
'host' => 'mysql-master-IP',
);
$databases['default']['slave'][] = array(
'driver' => 'mysql',
'database' => 'mysql-slave1-db',
'username' => 'mysql-slave1-user',
'password' => 'mysql-slave1-password',
'host' => 'mysql-slave1-IP',
);
Вопросы новой реализации
4. Редактирование существующего кода для работы с master/slave базами данных
Contrib module AutoSlave
$query = db_select('node', 'n', array('target' => 'slave'));
Вопросы новой реализации
Новые возможности для мультисайтинга
nginx
php-fpm
php-fpm
php-fpm
php-fpm
1. Security issues
2. Continuous integration
3. Drupal + mysql replication
4. Integration system analytic tools
5. Server side improvements
Спасибо за внимание.
Ваши вопросы?
Vitalii Zinenko
AltexSoft | Custom Software Development Company
Lviv Drupal Camp
By Vitali Zinenko
Lviv Drupal Camp
- 1,026