memuat halaman lambat

8

Saat ini saya menghadapi beban halaman yang lambat dengan checkout menjadi yang paling lambat :

  • 28 permintaan
  • 18,5 KB ditransfer (sisanya di-cache dari disk atau memori)
  • Selesai: 15.24s (loader menghilang dan pengguna dapat melakukan sesuatu)
  • DOMContentLoaded: 6,45s
  • Beban: 10.28s

Memuat checkout / kereta berakhir dengan:

  • 29 permintaan
  • 28,5 KB ditransfer (sisanya di-cache dari disk atau memori)
  • Selesai: 6,35s
  • DOMContentLoaded: 1.9s
  • Muat: 3,79s

sementara kereta kosong memiliki ini:

  • 22 permintaan
  • 8.2 KB ditransfer (sisa di-cache dari disk atau memori)
  • Selesai: 2.78s
  • DOMContentLoaded: 1.22s
  • Muat: 2,65s

Saya menggunakan redis untuk caching dan semua cache aktif. Javascript diperkecil, digabungkan dan digabungkan serta css dan html. Server ini terletak cukup baik dengan 8 CPU, 16GB RAM dan SSD. Muat dll tidak pernah cukup tinggi untuk disebutkan. Pada dasarnya server sedang tidur ...

Hanya ada ~ 80 produk dan satu toko. Kami tidak menggunakan bagian konten dari Magento. Hanya halaman detail produk, checkout dan area pelanggan (serta backend) dilayani oleh Magento. Ada sistem CMS "di depan" Magento yang melayani halaman dalam total kurang dari satu detik termasuk media.

Saya melihat bahwa TTFB untuk dokumen checkout sudah 5.66s. Dengan profiler Magento diaktifkan, saya dapat menemukan magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_bodypenyebab sebagian besar waktu itu. Meskipun tidak jelas apa sebenarnya penyebabnya. Di sini profiler tidak dapat banyak membantu (setidaknya saya).

magento->routers_match                                                                                                                                                                                                                                                                                            5.347600 5.347600 1  42,063,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index                                                                                                                                                                                                                                                    5.143997 5.143997 1  15,976,176 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body                                                                                                                                                                                                                                       5.143980 5.143980 1  15,975,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest                                                                                                                                                                                                           0.000609 0.000609 1  82.464     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest->OBSERVER:checkout_allow_guest                                                                                                                                                                            0.000592 0.000592 1  80.944     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT                                                                                                                                                                                                                               0.106220 0.035407 3  13,085,544 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_load                                                                                                                                                                                                                  0.000666 0.000666 1  136.56     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_xml                                                                                                                                                                                                          0.005658 0.005658 1  174.632    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks                                                                                                                                                                                                       0.099472 0.099472 1  12,755,648 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements                                                                                                                       0.099462 0.099462 1  12,902,296 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements                                                                                                    0.091426 0.091426 1  11,885,184 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->EVENT:core_layout_block_create_after                                                              0.000169 0.000003 51 -16.128    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements                    0.000609 0.000609 1  52.76      0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements 0.000455 0.000455 1  26.952     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after                                                                                                                                                                                           0.000297 0.000297 1  16.32      0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after->OBSERVER:persistent                                                                                                                                                                      0.000279 0.000279 1  14.776     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch                                                                                                                                                                                                                         0.002972 0.002972 1  116.752    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch                                                                                                                                                                                   0.002913 0.002913 1  110.192    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor                                                                                                                                                        0.002900 0.002900 1  108.656    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags                                                                                                                             0.001175 0.001175 1  77.784     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_varnish                                                                                                0.000516 0.000516 1  35.056     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_builtin                                                                                                0.000629 0.000629 1  41.08      0

Saya juga mengaktifkan profiler basis data tetapi tidak ada permintaan yang membutuhkan lebih dari 1 ms meskipun ada hampir 120 panggilan. Tapi itu menambahkan hingga 120 ms saja.

Saya membuat profil xdebug secara lokal dan dapat melihat bahwa sebagian besar waktu terbuang dalam autoloading. Tapi saya tidak yakin apakah itu "normal". Saya hanya ingin tahu mengapa file_exists sering dipanggil. Ketika saya berada di bawah kesan semuanya dikompilasi dan di-cache. Saya gunakan composer dump-autoload -o --apcusetelah kompilasi di. Dan tentu saja apc aktif dan berjalan.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Namun saya terjebak di sini untuk saat ini. Saya sepertinya tidak bisa mengerti mengapa TTFB sudah 5 detik. Dan bahkan jika saya menyelesaikannya masih ada 10 detik lagi untuk menjelaskan dan memperbaikinya. Tebakan utama saya saat ini adalah bahwa ini adalah beberapa permintaan xhr di pemblokiran latar belakang. Yaitu. Saya melihat metode pengiriman-perkiraan hanya dimulai setelah jeda yang sangat panjang sekitar 7 detik pada 13 detik dan membutuhkan waktu sekitar 647 ms. Mengapa menunggu begitu lama untuk memicu itu? Sampai selesai animasi loader ditampilkan sehingga halaman tampak "hang".

estimasi-pengiriman-metode "penundaan"

checkout halaman memuat

Setiap masukan sangat disambut! Saya berharap untuk memuat halaman 2 - 4 detik maks. karena itulah yang saya mulai dengan.

Sunting: Saya memperbaiki TTFB tinggi. Seperti yang saya katakan saya menggunakan Redis untuk caching. Juga untuk caching sesi tetapi mengarah ke penguncian antara dua sesi bersamaan. Sebenarnya menjadi permintaan checkout dan permintaan perkiraan pengiriman yang menyebabkan batas waktu 5 detik. Saya mengalihkan sesi kembali ke mode file normal. Sayangnya ini sama sekali tidak memperbaiki waktu muat yang lama! Tebakan terbaik saya saat ini adalah bahwa sesuatu membuat metode perkiraan-pengiriman menunggu sebelum dipanggil sehingga memblokir halaman. Selain itu saya mencoba menunda semua JS tanpa perubahan apa pun.

Sunting2: Ketika @ peter-ocallaghan mencatat masalah dengan checkout checkout jadi lambat (+10 dtk) sebenarnya hanya masalah khusus krom ketika dev-console dibuka. Checkout / kereta tampaknya tidak terpengaruh.

steros
sumber
Saya tidak tahu banyak tentang itu. Saya menghadapi masalah ini ketika saya memanggil api pihak ketiga atau plugin. Ini terjadi ketika saya belum menerima tanggapan dari itu.
55840
Saat ini saya berusaha menghilangkan semua yang mungkin mengganggu. Saya juga memanggil api pihak ke-3 jadi saya mematikannya untuk ujian. Tidak ada perubahan. Sejauh ini saya tidak bisa mengesampingkan apa yang membuat halaman memuat sangat lambat.
steros
Saya akan pergi mengambil risiko dan menebak bahwa jika Anda menutup debugger Chrome waktu akan "ajaib" jatuh ke (atau setidaknya secara signifikan lebih dekat dengan) waktu muat 2-4 detik. Selama penyelidikan situs M2 langsung, saya tidak bisa mengerti bagaimana pedagang akan menerima 15 kali memuat detik. Akhirnya saya menyadari bahwa dengan menggunakan debugger krom sebagai mekanisme pengaturan waktu, saya secara tidak sengaja memperlambat permintaan dengan urutan besarnya.
Peter O'Callaghan
Saya hanya menguji ini. Sebagian besar halaman membutuhkan waktu setidaknya ~ 4 detik dan kereta hingga 7 detik. Tetapi setidaknya checkout tidak dimuat dalam 15 detik di semua browser lain, lebih seperti 5 detik. Sepertinya ini sesuatu dengan chrome.
steros
Saya berhasil menurunkan waktu lagi dengan menggunakan memcached untuk cache sesi. Seperti yang disebutkan saya menggunakan redis tetapi itu menyebabkan penguncian jadi saya beralih kembali ke file tetapi tampaknya mengunci juga. Jadi saya beralih ke memcached dan sekarang kereta memuat ~ 2sec pada beban kedua dan 5-7sec pada yang pertama. Tampaknya perkiraan-pengiriman-metode dan total-informasi adalah pemblokir di sini. Jika saya hanya memuat ulang troli tanpa perubahan, hanya 2 detik. Jika saya menambahkan produk atau hanya mengubah jumlah dan menyegarkan keranjang -> 5-7 detik.
steros

Jawaban:

3

Sepertinya masalah utama saya adalah sesi concurrency terjadi karena alasan apa pun. Saya mencoba menggunakan sesi caching dengan Redis seperti yang diusulkan dalam dokumentasi.

'session' =>
array (
  'save' => 'redis',
  'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => '6379',
    'password' => '',
    'timeout' => '2.5',
    'persistent_identifier' => '',
    'database' => '2',
    'compression_threshold' => '2048',
    'compression_library' => 'gzip',
    'log_level' => '1',
    'max_concurrency' => '6',
    'break_after_frontend' => '5',
    'break_after_adminhtml' => '30',
    'first_lifetime' => '600',
    'bot_first_lifetime' => '60',
    'bot_lifetime' => '7200',
    'disable_locking' => '0',
    'min_lifetime' => '60',
    'max_lifetime' => '2592000'
  )
),

Tetapi karena saya memiliki masalah penguncian sesi saya pikir ini masuk ke dalam akun:

break_after_frontend

Jumlah detik untuk menunggu sebelum mencoba memecahkan kunci untuk sesi frontend (yaitu, etalase).

Berarti selalu ada penundaan maks. 5 detik. Ketika saya beralih ke sesi memcached sedikit lebih baik karena menunggu lebih rendah. Ini default untuk pengaturan ini:

memcached.sess_lock_wait_min => 1000
memcached.sess_lock_wait_max => 2000
memcached.sess_lock_retries => 5

Ini adalah default dari beberapa versi php-memcached yang lebih lama. Versi terbaru mengusulkan standar-standar ini:

memcached.sess_lock_wait_min => 150
memcached.sess_lock_wait_max => 150
memcached.sess_lock_retries => 200

Setelah membaca keduanya: https://github.com/php-memcached-dev/php-memcached/pull/350 https://github.com/php-memcached-dev/php-memcached/issues/269

Saya mencoba dengan:

ini_set('memcached.sess_lock_wait_min', 150);
ini_set('memcached.sess_lock_wait_max', 150);
ini_set('memcached.sess_lock_retries', ini_get('max_execution_time') * 1000 / 150);

di index.php Magento dan ini lagi mempercepat proses. Saya sekarang mendapatkan beban checkout sekitar 4 detik. Gerobak sedikit lebih lambat dengan ~ 5 detik karena pemuatan total informasi. (semua coba terlebih dahulu tanpa cache browser)

Saya kira memperbaiki masalah penguncian sesi lagi akan mempercepat waktu pemuatan karena melihat profil mengungkapkan masih ada menunggu session_start()dari 300 hingga 800 ms untuk beberapa panggilan.

steros
sumber
Saya juga terjebak pada Sateros ini. Saya menggunakan pernis dengan solusi untuk https dan Redis. Situs lambat. Telah mencari melalui newrelic dan tidak dapat menemukan jawaban konklusif. Apakah ini masalah Redis?
Adarsh ​​Khatri
1

Kemungkinan Optimalisasi:

Profiler

Tuan Lewis
sumber
0

Dengan menggunakan Solar atau Memcache atau Varnish, Anda dapat mempercepat situs magento Anda.

Puspalata Panigrahi
sumber
Saya menggunakan Redis dan memcached. Saya tidak dapat menggunakan Varnish karena tidak mendukung https dan saya tidak ingin menggunakan salah satu solusinya.
steros
@steros Harap lihat profil saya, profil Jaringan untuk info kontak dan hubungi saya melalui Skype untuk bantuan.
Wilson Hauck