Высокое время ожидания от времени до первого байта с Magento + Nginx

У меня есть проблема с высоким временем TTFB, особенно временем ожидания после того, как отправят.

Webpagetest показывает, что TTFB составляет почти 4 секунды.

Pingtom указывает, что время ожидания является узким местом здесь

Вот моя установка для Magento + сервер Nginx, см. снимки экрана для теста и конфигурацию http://share.pho.to/#7BuP9

  1. ОС: сервер Ubuntu 14.04
  2. nginx/1.4.6
  3. PHP 5.5.9
  4. opcache 7.0.3
  5. memcached
  6. PHP-FPM
  7. Magento 1.9.0.1
  8. Linode 2 ГБ/2Core Сервер

Конфигурация сервера Nginx

server {
    server_name dev.magibooks.com;
    return 301 $scheme://www.dev.magibooks.com$request_uri;
}


server {
listen 80;

#listen 443 ssl spdy;
#ssl on;
#ssl_certificate      /etc/nginx/ssl/dev/ssl-dev-unified.crt;
#ssl_certificate_key  /etc/nginx/ssl/dev/ssl-dev.key;

server_name www.dev.magibooks.com;
root /var/www/www.dev.magibooks.com/web;

## rewrites dev.magibooks.com to www.dev.magibooks.com
#if ($http_host != "www.dev.magibooks.com") {
#    rewrite ^ $scheme://www.dev.magibooks.com$request_uri permanent;
#}

location / {
    index index.html index.php; ## Allow a static html file to be shown first
    try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
    expires 30d; ## Assume all files are cachable

    #auth_basic           "Restricted"; ## Message shown in login window
    #auth_basic_user_file /var/www/www.dev.magibooks.com/.htpasswd; 
    #autoindex            on;



}

location ~ /\.(eot|otf|ttf|woff)$ {
    add_header Access-Control-Allow-Origin *;
}

## These locations would be hidden by .htaccess normally
location /app/                { deny all; }
location /includes/           { deny all; }
location /lib/                { deny all; }
location /media/downloadable/ { deny all; }
location /pkginfo/            { deny all; }
location /report/config.xml   { deny all; }
location /var/                { deny all; }

location /var/export/ { ## Allow admins only to view export folder
    auth_basic           "Restricted"; ## Message shown in login window
    auth_basic_user_file /var/www/www.dev.magibooks.com/.htpasswd; ## See /etc/nginx/htpassword
    autoindex            on;
}

## Disable .htaccess and other hidden files
location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
}

location @handler { ## Magento uses a common front handler
    rewrite / /index.php;
}

location ~ \.php/ { ## Forward paths like /js/index.php/x.js to relevant handler
    rewrite ^(.*\.php)/ $1 last;
}

location ~ \.php$ { ## Execute PHP scripts
    if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

    expires        off; ## Do not cache dynamic content
    #fastcgi_pass   127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param  HTTPS $fastcgi_https;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    #fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration >     Configuration > Manage Stores
    fastcgi_param  MAGE_RUN_TYPE store;
    include        fastcgi_params; ## See /etc/nginx/fastcgi_params
}


location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
}
}

nginx.conf

user www-data;
worker_processes 2;
pid /run/nginx.pid;
worker_rlimit_nofile 60000;

events {
    worker_connections 10240;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 2;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    #gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_min_length 1100;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain application/xml text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##

    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs
    ##

    ## Detect when HTTPS is used
    map $scheme $fastcgi_https {
      default off;
      https on;
    }

    client_body_buffer_size 10K;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 4 4k;


    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Я попробовал следующее

  1. +/-Cloudflare
  2. оптимизированный php-fpm pm_* значения
  3. оптимизированный кэш включая opcache и memcached, эти изменения ускоряют на полной странице и загрузке документа полное время, но никакое значение, имевшее на времени TTFB
  4. +/-nginx журналы
  5. скорректируйте gzip уровень от 1-6
  6. Страница CMS загружается немного быстрее, но все еще имеет TTFB 1,815 с
  7. phpinfo () страница загружает приблизительно 40 мс
  8. Путем конца access.log всегда обнаруживается запрос после точного времени ожидания, например, когда я обновляю dev.magibooks.com, требуется 4 секунды на стороне сервера, чтобы видеть, что запрос обнаруживается на access.log
  9. Я подозреваю, что что-то делает со слишком многими продуктами на домашней странице, особенно настраиваемыми продуктами, я удалил 12 продуктов, TTFB уменьшил с 5 секунд до 4 секунд, но все еще значительный высоко
  10. php медленная страница показывает следующее

    [17-Sep-2014 21:48:45]  [pool www] pid 10333
    script_filename = /var/www/www.dev.magibooks.com/web/index.php
    [0x00007fc13eb6f8d8] session_start() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:125
    [0x00007fc13eb6f798] start() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:168
    [0x00007fc13eb6f650] init() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Model/Session/Abstract.php:84
    [0x00007fc13eb6f558] init() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Model/Session.php:42
    [0x00007fc13eb6f428] __construct() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Model/Config.php:1348
    [0x00007fc13eb6f310] getModelInstance() /var/www/www.dev.magibooks.com/web/app/Mage.php:463
    [0x00007fc13eb6f1e0] getModel() /var/www/www.dev.magibooks.com/web/app/Mage.php:477
    [0x00007fc13eb6f088] getSingleton() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Controller/Varien/Action.php:493
    [0x00007fc13eb6ef00] preDispatch() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Adminhtml/Controller/Action.php:160
    [0x00007fc13eb6ed08] preDispatch() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Controller/Varien/Action.php:407
    [0x00007fc13eb6eaf8] dispatch() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php:250
    [0x00007fc13eb6e9a8] match() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Controller/Varien/Front.php:172
    [0x00007fc13eb6e850] dispatch() /var/www/www.dev.magibooks.com/web/app/code/core/Mage/Core/Model/App.php:354
    [0x00007fc13eb6e6b0] run() /var/www/www.dev.magibooks.com/web/app/Mage.php:684
    [0x00007fc13eb6e570] run() /var/www/www.dev.magibooks.com/web/index.php:87 11. minified all js and css
    
1
задан 3 November 2015 в 10:14
2 ответа

Я сделал следующее, чтобы успешно сократить время загрузки страницы с 6 до 1 с помощью

  1. disable newrelic
  2. disable longview

Необходимо сделать 1. Я занимаюсь обновлением до 4-ядерной системы с 4 ГБ памяти, результат я опубликую здесь 2. Я собираюсь проконсультироваться с решением для полного кеширования страницы.

0
ответ дан 4 December 2019 в 08:31

Magento в стандартной комплектации исключительно быстр, он загружает страницы за 0,5 с со всеми отключенными кешами и за 0,2 с со всеми включенными кешами.

Таким образом, вам не нужно строго делать Magento быстрее, вам нужно удалить / изменить все, что замедляет его работу.

Есть 2 узких места для производительности.

  • Плохой хостинг
  • Плохой код

Решить их очень просто,

  • Используйте хостинг-провайдера, который специализируется на высокопроизводительном хостинге Magento, который может обеспечить поддержку на уровне магазина, чтобы помочь вам масштабировать и направлять вас по повышению производительности
  • Профилируйте свой код и удалите / повторно факторно работающий код

Вы узнаете, знает ли ваш хостинг-провайдер является вашим узким местом, просто установив демонстрационный магазин с образцами данных. Если для загрузки требуется более 0,5 секунды со всеми отключенными кешами, то в этом проблема.

0
ответ дан 4 December 2019 в 08:31

Теги

Похожие вопросы