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_body
penyebab 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 --apcu
setelah kompilasi di. Dan tentu saja apc aktif dan berjalan.
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".
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.
Jawaban:
Sepertinya masalah utama saya adalah sesi concurrency terjadi karena alasan apa pun. Saya mencoba menggunakan sesi caching dengan Redis seperti yang diusulkan dalam dokumentasi.
Tetapi karena saya memiliki masalah penguncian sesi saya pikir ini masuk ke dalam akun:
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:
Ini adalah default dari beberapa versi php-memcached yang lebih lama. Versi terbaru mengusulkan standar-standar ini:
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:
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.sumber
Kemungkinan Optimalisasi:
Profiler
sumber
Dengan menggunakan Solar atau Memcache atau Varnish, Anda dapat mempercepat situs magento Anda.
sumber