» » » Повышение производительности и ускорение SocialEngine при помощи Memcached/APC/Xcache

Повышение производительности и ускорение SocialEngine при помощи Memcached/APC/Xcache

Повышение производительности и ускорение SocialEngine при помощи Memcached/APC/Xcache

Недавно мы работали над миграцией с SocialEngine v2 на SocialEngine v4.1.4 для одного из наших клиентов. Сайт SocialEngine загружался очень медленно, хотя было не так много пользователей на сайте. Мы попробовали ускорить сайт с помощью APC, сжатия HTML, JS и CSS, но это не увеличило значительно производительность. Существовали различные причины замедления, но главной причиной был неорганизованный и неэффективный исходный код на ранних стадиях разработки. Измененный код тесно связан с основным кодом SocialEngine по этому мы не могли перенести его в SocialEngine v4.1.4 с помощью сценария миграции. Нам пришлось переписать измененный код с нуля по очевидным причинам, после перехода с socialengibe v2 на v4.1.4. Процесс миграции мы обсудим в другой статье, сейчас мы уделил основное внимание ускорению v4.x SocialEngine при помощи использования кэширования.

Кэширование является жизненно важной частью любого веб-сайта. Социальная система поддерживает различные решения, как кэширование файлов на основе, файлового кэша, APC (Alternative PHP Cache) и Xcache. Все эти способы кэширования доступны в SocialEngine 4. Если вы не настроили Memcached, APC или Xcache то вы можете использовать файловую систему кэширования, но она гораздо медленнее, чем другие решения кэширования. В этой статье, мы покажем, инструкции по установке и настройке кэширования для SocialEngine. Мы предполагаем, что SocialEngine работает в активном режиме.

Memcache представляет собой распределенное кэширование, которое может быть использовано в сценарии, когда приложение работает на нескольких серверах. Все веб-данные, хранящиеся в Memcached будут распределены по всем веб-серверам. При использовании APC/Xcache с распределенной системой потребуется копирование данных на всех серверах. APC/XCache кэширование экономит на компиляции и времени выполнения PHP при этом нагрузка SocialEngine станет быстрей. Некоторые люди запутались может ли Memcached быть использован с APC/Xcache. Мы можем использовать сочетание Memcached (как для хранения данных) и APC/Xcache (как машинный код для PHP).

Теперь мы покажем, установку и настройку Memcached, APC и Xcache для SocialEngine на CentOS.

Установка и настройка Memcached на SocialEngine

1) Установка memcached,

  wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar zxpfv memcached*
cd memcached-1.4.5
./configure
make install
./memcached -u memcached -d -m 64 -l 127.0.0.1 -p 11211


2) Установить PHP Extension.

Загрузите и установите последнюю стабильную версию кэша из PECL.

wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
make install


memcache.so будет установлен в каталог PHP модулей, в настоящее время memcache.so устанавливается как расширение в php.ini

Чтобы узнать ваше расположение php.ini, выполните следующую команду

php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini

vi /usr/local/lib/php.ini

extension = “memcache.so”


Сохраните файл и перезагрузите HTTPD сервер.

 /etc/init.d/httpd restart


Чтобы проверить как загружается расширение в PHP, выполните следующую команду.

php -i | grep memcache
memcache
memcache support => enabled


3) Настройка memcached в SocialEngine

1. На странице http://yourserver/index.php/admin/core/settings/performance
2. Включить кэширование Memcached и добавить параметры, специфичные для memcached.
3. Сохранить изменения

Установка и настройка APC в SocialEngine
По умолчанию может быть только одна служба кэширования для PHP, так что если уже имеется другая (Eaccelerator и т.д.), отключите ее, чтобы использовать APC в качестве ускорителя исполнения сценариев PHP.

1) Установить APC

yum install php-pear
yum install php-devel
yum install httpd-devel
yum install pcre-devel
pecl install apc
echo "extension=apc.so" > /etc/php.d/apc.ini
/etc/init.d/httpd restart


Чтобы проверить как загружается расширение в PHP, выполните следующую команду.

php phpinfo()
apc.enabled=1


2) Настройка APC в SocialEngine

1. На странице http://yourserver/index.php/admin/core/settings/performance
2. Включить кэширование с возможностью APC.
3. Сохранить изменения

Установка и настройка Xcache с SocialEngine

1) Установить Xcache

wget http://xcache.lighttpd.net/pub/Releases/1.3.1/xcache-1.3.1.tar.gz
tar -zxvf xcache-1.3.1.tar.gz
cd xcache-1.3.1
phpize
./configure --enable-xcache
make
make install


Вы должны изменить timelib_structs.h установив Xcache
Найдите строку:

#include


Замените ее следующим образом:

# Include "timelib_config.h"


Создайте пароль для администрирования Xcache:

# echo -n “yourpassword”| md5sum


Затем откройте php.ini и добавьте следующий параметры конфигурации.

[xcache-common]
zend_extension      = /usr/lib/php/modules/xcache.so

[xcache.admin]
xcache.admin.user   = "admin"
;how to create md5 pwd: echo -n "password"| md5sum
xcache.admin.pass   = "a364b1d54799c713b8a377de50f8ed3c"  #easywms.com

[xcache]
; Change xcache.size to tune the size of the opcode cache
; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
; someone said, if >=64 will get problem

xcache.size         = 32M
xcache.shm_scheme   = "mmap"
; set to cpu count (cat /proc/cpuinfo |grep -c processor)

xcache.count        = 4
; just a hash hints, you can always store count(items) > slots

xcache.slots        = 8K
; ttl of the cache item, 0=forever

xcache.ttl          = 0
; interval of gc scanning expired items, 0=no scan, other values is in seconds

xcache.gc_interval  = 0

; Change xcache.var_size to adjust the size of variable cache
; same as aboves but for variable cache, if you have not used xcache function in script,forget it

xcache.var_size     = 8M
xcache.var_count    = 1
xcache.var_slots    = 8K
xcache.var_ttl      = 0
xcache.var_maxttl   = 0
xcache.var_gc_interval =     300

xcache.test         = Off
xcache.readonly_protection = On
; for *nix, xcache.mmap_path is a file path, not directory.
; Use something like "/tmp/xcache" if you want to turn on ReadonlyProtection
; 2 group of php won’t share the same /tmp/xcache
; for win32, xcache.mmap_path=anonymous map name, not file path

xcache.mmap_path    = "/tmp/xcache"
; leave it blank(disabled) or "/tmp/phpcore/"
; make sure it’s writable by php (without checking open_basedir)

xcache.coredump_directory =   ""
; per request settings

xcache.cacher       = On
xcache.stat         = On
xcache.optimizer    = Off

[xcache.coverager]
; per request settings
; enable coverage data collecting for xcache.coveragedump_directory and
; xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)

xcache.coverager    = On
; ini only settings
; make sure it’s readable (care open_basedir) by coverage viewer script
; requires xcache.coverager=On

xcache.coveragedump_directory = ""


2) Настройка XCache в SocialEngine

1. На странице http://yourserver/index.php/admin/core/settings/performance
2. Включить кэширование Xcache и добавить учетные данные пользователя.
3. Сохранить изменения

Заключение
Мы нашли Xcache немного быстрее, чем Memcached/APC для SocialEngine 4 и использовали его для сайта клиента.

Пожалуйста, не стесняйтесь оставить отзыв или предложить другую технику кэширования.

Другие публикации по теме:

Комментарии