我以为这可能是一个StackOverflow的问题,但我发现Nginx + php5-fpm在这里讨论什么是错误在我的php-fpmconfiguration? 所以我会在这里发表。 其他的研究是多次search有关缓慢wordpress与类似的configuration,但在其他所有情况下,我可以find,这是前端和后端缓慢,不只是pipe理员。 这是我的规格:
在Ubuntu 11.10上的Wordpress 3.3 + Nginx 1.0.10 + php5-fpm 5.3.8 + ISPconfig 3.0.4.1 + 256Mb VPS
在一个Zen Cart商店和phpbb3中,以及不同的php-fpm池。 除了必需品外几乎没有任何东西在运行,而且这两个地点绝对是火箭。 当W3TC加速时,Wordpress网站的前端也一样。
但….pipe理员需要6-10秒做任何事情。 在mysql的慢日志里没有任何东西,或者是php-fpm的错误日志,负载不会突然增加,内存的使用也不会弹起来(但是请看下面的内存)。
它第一次加载,在WP-admin / options.php它显示了一个很长的页面,看起来不对,像线以后的行…
active_plugins SERIALIZED DATA
这是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.xx: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
我不得不根据phpmyadmin的build议对/etc/php5/conf.d/suhosin.ini进行更改,并且还提高了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
我减less了wp-config.php中的内存限制,如下所示。
define('WP_MEMORY_LIMIT', '32M'); define('WP_MAX_MEMORY_LIMIT', '32M');
虽然,我已经将这些限制从256更改为128到64到32,并且对前端或后端速度没有影响。
这里是我的fastcgi_params文件,我在这里发布,因为我已经做了一个修改,build议在这里修复PHP仍然发出的破碎连接path_info:
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;
我改变了主题为默认,closures所有的插件,改变所有的MySQL表到innodb,并按照mysqltuner的build议(即使如我所说,没有什么关于缓慢的mysql在日志中我可以看到)。
我试着改变从套接字到端口和返回,等等,等等。 不知道现在还能做什么 – 任何人都可以在这里find任何东西或build议?
所有最奇怪的事情? 我正在使用类似的configuration在Amazon S3上的免费“微型”实例上运行个人WP安装,并且它会飞行。 这是什么使得诊断更加困难。
是的,我可能会在内存上运行一些紧张,但为什么Zen Cart和phpbb运行一个大的分贝加载页面200毫秒,但我的WordPress的安装是10个小页面? 而且,要回答另外一个问题 – 是的,如果我把其他的网站关掉,速度还是会发生的。
对 – 我的生命中有两天,还有很多关于xdebug的东西,我可以回答我自己的问题,并且安全地说,你现在不能运行Wordpress 3.3,即使是一个全新的,没有插件的新安装,比512Mb的RAM。 这是一个耻辱,因为256Mb VPS之前一直非常好。
以前,一切正常。 你记得在我原来的问题中,我注意到“ALERT – 脚本试图将memory_limit增加到高于允许值的268435456字节”?
那么,我也注意到,我没有看到任何内存在命令行实用程序“顶部”扣球。 但显然,这并不足够快。 有了graphics工具的VPS主机的一些帮助,当WP 3.3的ADMIN端正在尝试加载时,我们看到228Mb的使用情况。 但前端呢? 那么,正如我之前所说,那个拉链,甚至登记在他们的图表上。
发生这种事后不久,我发现这个: http : //www.dev4press.com/2011/blog/benchmark/wordpress-benchmark-3-0-vs-3-1-vs-3-2-vs-3-3 /这证实了我的发现,但并不完全显示相同的内存使用情况。
当我决定做什么的时候,我已经暂时转移到512Mb的RAM VPS,当然,WP再次罚款。 但这不是一个负担得起的长期解决scheme。 所以要么尝试还原,要么看另一个CMS。 经过5年快乐Wordpressing,这是一个耻辱。
最后要注意的是,要避免不可避免的“但你可以得到1Gb内存VPS这些天很便宜”评论,是的,你可以。 而且我被烧得这么厉害,就是这么说。 你得到你所支付的 – 只是支付256比512更好。