[Sysadmins] php-5.3.3 + fpm + nginx
ddv на bgc.perm.ru
ddv на bgc.perm.ru
Пн Сен 20 17:53:13 UTC 2010
Вечер добрый!
Моя попытка заюзать php-5.3.3... На примере одно джумла сайта..
давно хотел перейти на сабж, но всё ждал php-5.3.3.. код на сайтах всех
переписал... все сайты работают, но на apache2 + mod_php
А вот сабж почти не работает.
вот такое в лог nginx падает:
2010/09/20 23:25:21 [error] 19630#0: *341 FastCGI sent in stderr: "PHP
Notice: Trying to get property of non-object in
/var/www/mydomain.ru/plugins/system/xajax.php on line 57" while reading
response header from upstream, client: 94.50.5.244, server: mydomain.ru,
request: "GET /administrator/ HTTP/1.1", upstream:
"fastcgi://127.0.0.1:9000", host: "mydomain.ru"
Конфиг nginx:
server {
listen 80;
server_name mydomain.ru www.mydomain.ru;
access_log /var/log/nginx/mydomain.ru-access.log;
error_log /var/log/nginx/mydomain.ru-error.log;
large_client_header_buffers 4 8k;
root /var/www/mydomain.ru;
index index.php;
gzip on;
gzip_types text/plain text/css application/x-javascript text/xml
application/xml application/rss+xml text/javascript image/x-icon;
gzip_min_length 1000;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable msie6;
location / {
rewrite "^/administrator"
https://mydomain.ru/administrator last;
expires 30d;
error_page 404 = @joomla;
log_not_found off;
}
location @joomla {
rewrite ^(.*)$ /index.php?q=$1 last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
location ~* \.(css|js) {
gzip_static on;
gzip_disable Firefox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
gzip_disable Konqueror;
}
}
server {
listen 443;
server_name mydomain.ru www.mydomain.ru;
keepalive_timeout 70;
access_log /var/log/nginx/mydomain.ru-access.log;
error_log /var/log/nginx/mydomain.ru-error.log;
large_client_header_buffers 4 8k;
root /var/www/mydomain.ru;
index index.php;
gzip on;
gzip_types text/plain text/css application/x-javascript text/xml
application/xml application/rss+xml text/javascript image/x-icon;
gzip_min_length 1000;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable msie6;
location / {
expires 30d;
error_page 404 = @joomla;
log_not_found off;
}
location @joomla {
rewrite ^(.*)$ /index.php?q=$1 last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
location ~* \.(css|js) {
# разрешаем отдавать вместо несжатого файла,
предварительно # сжатый с постфиксом «.gz», если такой есть
gzip_static on;
# запрещаем сжатие файлов CSS и JS для проблемных
браузеров
gzip_disable Firefox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
gzip_disable Konqueror;
}
ssl on;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers
AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/httpd2/conf/ssl/keys/mydomain.ru.crt;
ssl_certificate_key /etc/httpd2/conf/ssl/keys/mydomain.ru.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
Конфиг fpm:
cat /etc/fpm/fpm.d/joomla.conf
[joomla]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = apache2
group = apache2
pm = dynamic
pm.max_children = 15
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 15
slowlog = /var/log/php5-fpm/joomla.slow.log
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/joomla.err.log
php_admin_flag[log_errors] = on
php_admin_value[upload_max_filesize] = 100M
Страница открывается долго, 20 секунд, висит 5 процессов php5-fpm и грузят
проц под 100%. Когда тоже самое на apache2 + mod_php 1,5 сек и нагрузка на
проц 3%.
Ещё такой момент непонятен с nginx.
В Firefox смотрю http заголовки и вижу в обоих случаях(apache2 и nginx)
gzip контент. В Google Chromium можно увидеть сколько скачано и реальный
размер. Для apache2 показывает, что скачано скажем 30kb и реальный размер
70kb, для nginx просто как не сжатое 70kb. Жмёт ли, непонятно.
Если включить apc, то в логах php5-fpm наблюдаю:
Sep 20 21:28:55.550360 [WARNING] [pool joomla] child 11619 said into
stderr: "[Mon Sep 20 21:28:55 2010] [apc-warning] "
Sep 20 21:28:55.550445 [WARNING] [pool joomla] child 11619 said into
stderr: "Potential cache slam averted for key
'cache_mod_mainmenu-b0047de1b6557e1cbc01b3fe0b7aece3_expire'"
Sep 20 21:28:55.550513 [WARNING] [pool joomla] child 11619 said into
stderr: " in /var/www/mydomain.ru/libraries/joomla/cache/storage/apc.php on
line 71."
Sep 20 21:28:55.550562 [WARNING] [pool joomla] child 11619 said into
stderr: ""
ну и половину контента естественно не отдаёт при включенном apc
Подробная информация о списке рассылки Sysadmins