Я подумал, что это может быть вопрос StackOverflow, но обнаружил, что Nginx + php5-fpm обсуждается здесь на Что не так в моей конфигурации php-fpm? так что я отправлю здесь. Другое проведенное исследование - это несколько поисков, связанных с медленным wordpress с аналогичной конфигурацией, но во всех других случаях, которые я мог найти, это был медленный передний И задний конец, а не только администратор. Вот моя спецификация:
Wordpress 3.3 на Ubuntu 11.10 + Nginx 1.0.10 + php5-fpm 5.3.8 + ISPconfig 3.0.4.1 + 256 МБ VPS
Запуск магазина Zen Cart и phpbb3 в разных пулах php-fpm. Там почти ничего не работает, кроме самого необходимого, и оба эти сайта абсолютно стремительно развиваются. Как и внешний интерфейс сайта Wordpress, когда W3TC ускорился.
НО .... админке требуется 6-10 секунд, чтобы что-либо сделать. Нет ничего в журнале медленной работы mysql или журнале ошибок php-fpm, нагрузка не увеличивается, и использование памяти не увеличивается (но о памяти см. Ниже).
При первой загрузке в wp-admin / options.php он показывает очень длинную страницу, которая выглядит неправильно, со строкой за строкой вроде ...
active_plugins СЕРИАЛИЗИРОВАННЫЕ ДАННЫЕ
Вот основные элементы из ps_mem.py
732.0 KiB + 87.5 KiB = 819.5 KiB bash
2.1 MiB + 369.0 KiB = 2.4 MiB fail2ban-server
1.8 MiB + 2.0 MiB = 3.9 MiB nginx (5)
5.1 MiB + 12.8 MiB = 17.9 MiB php5-fpm (29)
87.8 MiB + 149.0 KiB = 88.0 MiB mysqld
---------------------------------
116.2 MiB
=================================
Вот средняя нагрузка почти всегда: средняя нагрузка: 0,48, 0,53, 0,51
А вот результат free -m
total used free shared buffers cached
Mem: 241 202 38 0 3 49
-/+ buffers/cache: 149 92
Swap: 511 29 482
Вот nginx.conf, включая настройки cloudflare real_ip (тоже пробовал без cloudflare), а также изменения, необходимые для работы постоянных ссылок под nginx:
server {
listen 31.172.x.x:80;
server_name mysite.co.uk www.mysite.co.uk www.my-site.co.uk my-site.co.uk;
root /var/www/mysite.co.uk/web;
index index.html index.htm index.php index.cgi index.pl index.xhtml;
error_page 400 /error/400.html;
error_page 401 /error/401.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 500 /error/500.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_log /var/log/ispconfig/httpd/mysite.co.uk/error.log;
access_log /var/log/ispconfig/httpd/mysite.co.uk/access.log combined;
## Disable .htaccess and other hidden files
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location /stats {
index index.html index.php;
auth_basic "Members Only";
auth_basic_user_file /var/www/clients/client3/web9/.htpasswd_stats;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web9.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_intercept_errors on;
}
set_real_ip_from 204.93.240.0/24;
set_real_ip_from 204.93.177.0/24;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
real_ip_header CF-Connecting-IP;
client_max_body_size 28M;
client_body_buffer_size 128k;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?q=$1 last;
break;
}
#include /var/www/mysite.co.uk/web/nginx.conf;
}
Вот пул php5-fpm
[web9]
listen = /var/lib/php5-fpm/web9.sock
listen.owner = web9
listen.group = client3
listen.mode = 0660
user = web9
group = client3
pm = dynamic
pm.max_children = 4
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
chdir = /
php_admin_value[open_basedir] = /var/www/clients/client3/web9/web:/var/www/clients/client3/web9/tmp:/var/www/mysite.co.uk/web:/srv/www/mysite.co.uk/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin
php_admin_value[session.save_path] = /var/www/clients/client3/web9/tmp
php_admin_value[upload_tmp_dir] = /var/www/clients/client3/web9/tmp
php_admin_value[date.timezone] = "UTC"
php_admin_value[post_max_size] = 28M
php_admin_value[session.gc_maxlifetime] = 604800
php_admin_value[upload_max_filesize] = 28M
php_admin_flag[display_errors] = off
php_admin_flag[display_startup_errors] = off
php_admin_flag[log_errors] = off
php_admin_flag[ignore_repeated_errors] = off
php_admin_flag[ignore_repeated_source] = off
php_admin_value[memory_limit] = 32M
Мне пришлось внести изменения в /etc/php5/conf.d/suhosin.ini как посоветовал phpmyadmin, а также увеличил лимит памяти для WP, поскольку я получал «ALERT - скрипт пытался увеличить memory_limit до 268435456 байт, что превышает допустимое значение».
; configuration for php suhosin module
extension=suhosin.so
suhosin.executor.include.whitelist="phar"
suhosin.request.max_vars=2048
suhosin.post.max_vars=2048
suhosin.request.max_array_index_length=256
suhosin.post.max_array_index_length=256
suhosin.request.max_totalname_length=8192
suhosin.post.max_totalname_length=8192
suhosin.get.max_value_length=1024
suhosin.memory_limit=128M
Я уменьшил ограничение памяти в wp-config.php, как показано ниже.
define('WP_MEMORY_LIMIT', '32M');
define('WP_MAX_MEMORY_LIMIT', '32M');
Хотя я изменил эти ограничения с 256 на 128 до 64 на 32, и это НЕ имеет значения для начальной или конечной скорости.
Вот мой файл fastcgi_params, который я публикую здесь, потому что я внес изменения в соответствии с рекомендациями Вот чтобы исправить сломанный конкатенированный path_info, который все еще отправляет php:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
# fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_URL $script_url;
fastcgi_param SCRIPT_URI $scheme://$http_host$script_url;
# fastcgi_param SCRIPT_FILENAME $document_root$script_filename;
# fastcgi_param PATH_INFO $path_info;
# fastcgi_param PATH_TRANSLATED $document_root$path_info;
#try_files $fastcgi_script_name =404;
Я изменил тему по умолчанию, отключил все плагины, изменил все таблицы mysql на innodb и выполнил рекомендации mysqltuner (хотя, как я уже сказал, в журналах нет ничего о медленном mysql).
Я пробовал менять php-fpm с сокета на порт и обратно, и так далее и тому подобное. Не совсем уверен, что еще делать сейчас - может ли кто-нибудь здесь что-нибудь заметить или посоветовать?
Самое странное из всех? Я запускаю персональную установку WP на бесплатном «крошечном» экземпляре на Amazon S3 с аналогичной конфигурацией, и она летает. Это делает диагностику еще более сложной.
И да, у меня может быть мало памяти, но тогда почему Zen Cart и phpbb работают с большими страницами загрузки базы данных менее 200 мс, а моя установка WordPress - это 10 маленьких страниц? И, чтобы ответить на другой вопрос - да, медлительность все равно будет, если я отключу другие сайты.
Правильно - два дня моей жизни и чертовски много знаний о таких вещах, как xdebug, я могу ответить на свой вопрос и с уверенностью сказать, что вы НЕ МОЖЕТЕ запустить Wordpress 3.3 - даже новую свежую установку без плагинов - на VPS с меньшими затратами. чем 512 МБ ОЗУ. Это позор, потому что VPS на 256 Мб раньше всегда был идеальным.
Раньше все было нормально. Вы помните, в моем первоначальном вопросе я заметил строку о «ALERT - скрипт пытался увеличить memory_limit до 268435456 байт, что превышает допустимое значение»?
Ну, я также заметил, что я не заметил всплесков памяти в утилите командной строки "top". Но очевидно, что это не обновляется достаточно быстро. С небольшой помощью хоста VPS, у которого есть графические инструменты, мы наблюдали всплески использования 228 МБ, когда сторона ADMIN WP 3.3 пыталась загрузить. Но передняя часть? Ну, как я уже сказал, это быстро продвинулось и даже не зарегистрировалось на их графике.
Вскоре после этого я обнаружил следующее: http://www.dev4press.com/2011/blog/benchmark/wordpress-benchmark-3-0-vs-3-1-vs-3-2-vs-3-3/ что подтверждает мои выводы, но не совсем показывает такое же использование памяти.
Я временно перешел на VPS с ОЗУ 512 МБ, пока решаю, что делать, и, конечно же, с WP снова все в порядке. Но это не доступное долгосрочное решение. Так что придется либо попробовать вернуться, либо посмотреть другую CMS. Что жаль, после 5 лет счастливой работы с Wordpressing.
Последнее замечание, чтобы предупредить неизбежное: «В наши дни вы можете получить 1 Гб RAM VPS очень дешево», да, вы можете. И я так сильно обгорел, и это все, что я говорю по этому поводу. Вы получаете то, за что платите - просто платить за 256 предпочтительнее, чем за 512 ...