Назад | Перейти на главную страницу

Повышение скорости бэкэнда WordPress на Ubuntu VPS

У меня есть сайт WordPress, работающий на моем VPS, который имеет довольно высокие характеристики (3520 МБ ОЗУ, 4 ядра). На сервере работают Nginx и php5-fpm.

Несмотря на то, что сайт реагирует на запросы пользователей, серверная часть, как правило, работает довольно медленно, при этом загрузка некоторых страниц администратора занимает несколько секунд. На сайте работает WooCommerce, но у меня работает WP Total Cache, а также кеш объектов APC.

Мой вопрос действительно касается конфигурации php5-php, поскольку я думаю, что, возможно, я не настроил ее оптимально для использования ресурсов сервера. Вот мой www.conf в пуле php5:

pm.max_children = 10

; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3

; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500

у меня тоже есть define('WP_MEMORY_LIMIT', '196M'); в wp-config.

Есть ли какие-нибудь очевидные шаги, которые я могу предпринять, чтобы улучшить скорость работы админки?

редактировать

Изучая журнал, я вижу довольно много таких:

[01-Oct-2014 20:56:38] ПРЕДУПРЕЖДЕНИЕ: [pool www] кажется занятым (вам может потребоваться увеличить pm.start_servers или pm.min / max_spare_servers), порождает 16 дочерних элементов, 0 неактивных и 7 всего дети

Что я могу сделать, чтобы решить?

Edit2:

top команда при загрузке админки. Разумны ли эти значения ?:

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
23237 www-data  20   0  381m  45m  31m S  10.3  1.4   0:03.52 php5-fpm
23229 www-data  20   0  385m  76m  60m S   5.0  2.3   0:09.54 php5-fpm
23230 www-data  20   0  613m  58m  39m S   4.7  1.7   0:06.38 php5-fpm
 1425 www-data  20   0  121m 7000 2292 S   1.3  0.2  87:43.85 nginx

Хорошо, я разместил это много лет назад и вроде как сдался. Затем я решил вернуться и провел небольшое исследование.

Мой сервер использует кеширование кода операции APC для повышения производительности php. Я помещаю файл apc.php в корень своего сайта, который позволяет мне видеть статистику кеша. Фрагментация была на 100%, а промахи превышали 50%.

в /etc/php5/conf.d/apc.ini файл, мне просто нужно было обновить настройку конфигурации, чтобы она была следующей:

apc.shm_size = 256
apc.max_file_size = 12M
apc.ttl=0

Перезагрузка php

sudo service php5-fpm restart

У моего сервера приличный объем памяти (около 3,5 ГБ), так что это не займет много времени и довело фрагментацию почти до нуля, а пропуски - примерно до 3-4%. Скорость значительно улучшилась, страницы теперь загружаются за 1-2 секунды, а не за 6-8, как раньше.


Источники и дальнейшая информация: