From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Date: Mon, 20 Sep 2010 23:53:13 +0600 From: To: Message-ID: <997af6681dce344a75ab458ca32cdaa3@bgc.perm.ru> X-Sender: ddv@bgc.perm.ru User-Agent: RoundCube Webmail/0.4-beta Subject: [Sysadmins] php-5.3.3 + fpm + nginx X-BeenThere: sysadmins@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux sysadmins' discussion List-Id: ALT Linux sysadmins' discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Sep 2010 17:53:18 -0000 Archived-At: List-Archive: Вечер добрый! Моя попытка заюзать 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