» » » SocialEngine советы по увеличению производительности

SocialEngine советы по увеличению производительности

Эта статья расскажет, как повысить скорость работы платформы SocialEngine.

Хостинг

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

Виртуальный хостинг

Обычный хостинг, как правило, самый недорогой, но он не подходят для сайтов с большим трафиком. Виртуальный хостинг работает следующим образом, множество веб-сайтов располагаются на одном сервере, и эти сайты делят все имеющиеся ресурсы. В некоторых случаях общий сервер может содержать сотни или даже тысячи активных веб-сайтов на одном сервере, которые могут влиять на работу друг друга. В то же время, хостинг-провайдеры устанавливают жесткие ограничения на виртуальном хостинге, которые приводят к частым ошибкам. Общий хостинг лучше всего подходят для легкого или статического контента, а для сильно динамических приложений, таких как SocialEngine, вы должны выбирать из, виртуальных частных серверов (VPS) или выделенных серверов.

VPS или выделенные сервера

Как упоминалось ранее, VPS и выделенные сервера являются лучшим выбором при рассмотрении хостинга. Однако, есть несколько предостережений.

Во-первых, большинство хостинг-провайдеров предоставляют управляемые и не управляемые планы для VPS и выделенных серверов. С помощью управляемых планов, хостинг-провайдер берет на себя ответственность за оказание помощи и вносит изменения в конфигурацию сервера, а также помогает вам в случае неисправности серверного программного обеспечения. Это влияет на увеличение стоимости. Не управляемые планы, созданы для тех, кто имеет опыт работы с серверами. Вся настройка такого сервера ляжет вам на плечи.

Во-вторых, выбранный план, должен иметь, по крайней мере, 2 Гб оперативной памяти. Если ваш хостинг-провайдер предлагает VPS или выделенный сервер с 4 гигабайтами памяти, а ваш бюджет позволяет приобрести, выберите его. Причина этого заключается в использование SocialEngine'ом MySQL InnoDB для хранения таблиц базы данных. InnoDB использует память для хранения индексов, а также кэш для часто используемых данных, что позволяет большую часть запросов SQL SocialEngine, выполнять за миллисекунды.

Советы по повышению производительности в PHP

1. Установите opcode cache
Одна из самых важных вещей, которуе вы можете сделать, чтобы улучшить производительность SocialEngine это установить opcode cache на сервере. Opcode cache хранит скомпилированное состояния PHP скриптов в разделяемой памяти, и использует его, по запросу сценария. Это устраняет один большой кусок работы PHP интерпретатора, который заключается в преобразовании PHP кода. Это может повысить производительность SocialEngine в целых 5 раз. Есть несколько opcode cache расширений для PHP (Xcache, eAccelorator и APC), однако в целом мы рекомендуем выбрать APC.

Некоторые из новых релизов APC были с ошибками, мы не рекомендуем использовать их. Из всех версий доступных APC, мы рекомендуем использовать 3.0.19 APC, 3.1.3p1 или 3.1.9.

2. Кэш в памяти, а не на файлах
Из всех функций кэширования, поддерживаемых SocialEngine, File-based caching на сегодняшний день является самым медленным. Все остальные функции кэширования в SocialEngine используют память и имеют высокую скорость доступа в кэш, чем скорость доступа к файлам.

3. Настройка конфигурации APC для лучших результатов
Если вы используете APC в качестве кэширования в SocialEngine, отредактируйте php.ini файл на сервере и поднимите apc.shm_size директивой 128:

apc.shm_size = 128


Если у вас APC 3.1.9, используйте следующие:

apc.shm_size = 128M


Это должно быть сделано, чтобы избежать высокой фрагментации, что снижает производительность APC.

Немного предупреждений, на некоторых Unix/Linux серверах, вам может потребоваться вручную поднять ресурс kernel.shmmax в целях обеспечения APC 128M памяти. Для этого найдите Sysctl конфигурационный файл на вашем сервере, как правило, /etc/sysctl.conf, и внести следующие изменения:

kernel.shmmax = 134217728


Это изменение должно быть сделано до повышения apc.shm_size директивы.

Рекомендуется отключить директиву apc.stat (http://us.php.net/manual/en/apc.configuration.php#ini.apc.stat), которая удаляет стат проверки PHP файлов. Обратите внимание, что когда эта директива отключена, любые изменения, вносимые в файлы PHP, потребуют ручной очистки кэша APC для того, чтобы файл можно перекомпилировать и кэш обновился.

4. Следите за ошибками PHP. Проверяйте журналы.
Ошибки и исключения в SocialEngine автоматически регистрируются в журналах ошибок SocialEngine, расположенный в temporary/log. Журнал - вы можете проверить в Stats > Log Browser через админ-панель.

Некоторые из наиболее распространенных ошибок и их решение:

1. Использование двух расширений PHP с opcode cache на сервере (например, APC, Xcache, Eaccelerator или Zend Optimizer). Если вы планируете использовать APC или Xcache, все остальные расширения для кэширования кода должны быть отключены.

2. MySQli losing connection to the MySQL database. Потеря соединения с базой данных MySQL. Обычно решается установкой mysqli.reconnect директивы.

3. MySQL max connection errors. Максимальное количество соединений. Обычно решается установкой меньшего значения interactive_timeout и wait_timeout до 30 секунд в MySQL.


Если вы столкнетесь с ошибкой и нуждаетесь в помощи, пожалуйста, зайдите на наш форум.

5. Используйте mod_php5 или mod_fastcgid с APC
Одна из распространенных проблем, которая встречается при работе APC, использование mod_fcgid с PHP, который на многоядерных системах является плохой идеей. Рассмотрим сценарий, в котором есть 2 четырехъядерных процессора на сервере. С 8 доступными ядрами mod_fcgid используется в качестве сервера API, APC выделяет 8 buckets в памяти для хранения данных. Если у вас APC настроен на использование 128 Мб разделяемой памяти, то получится, что APC использует 1 Гб оперативной памяти (8 *128MB=1024MB=1 Гб) в конечном итоге. Наличие 8 ядер, приводит APC к увеличению промахов кэша, они в свою очередь увеличивают нагрузка на процессор.

Чтобы избежать этой проблемы, вы можете использовать mod_fastcgid или mod_php5 с Apache. Если SocialEngine работает на сервере без каких-либо других веб-сайтов, mod_php5 даст более высокую производительность. Если у вас есть несколько веб-сайтов, однако, каждый веб-сайт существуют в рамках отдельной учетной записи пользователя по соображениям безопасности, вы можете использовать mod_fastcgid. 128M памяти для apc.shm_size - см. №3, APC будет использовать 1ГБ памяти. Кроме того, PHP будет использовать случайные ячейки памяти для APC кэширования, в результате чего повышаются промахи кэша и это увеличивает нагрузку на центральный процессор.

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

Комментарии