Mempercepat kereta untuk checkout dan checkout tindakan simpanan


18

Saya menjalankan beberapa toko Magento CE dan mempercepatnya dengan caching, namun kereta dan checkout masih lambat. Adakah yang punya pengalaman atau kiat mempercepat halaman ini?

Mungkin dengan mengoptimalkan database?

Beberapa pertanyaan dilakukan ketika menyimpan pesanan dari checkout muncul di log kueri lambat di server dan database tampaknya menjadi penghambat.


apa artinya lambat? 1s? 5s? ... juga memberikan beberapa detail tentang ukuran toko (jumlah produk sederhana, jumlah yang dapat dikonfigurasi, ukuran tabel sales_flat_quote * dan sebagainya).
FlorinelChis

Lambat adalah antara 5 dan 10 detik tergantung pada seberapa sibuk toko itu. Ada 50.000 produk sederhana, tidak ada jenis lain. ID sales_flat_quote harus dicari besok (tidak ada akses saat ini)
Sander Mangel

1
berapa banyak aturan harga keranjang belanja yang Anda miliki? mereka memperlambat gerobak. Kami juga berharap dapat mengatasi masalah ini dalam rilis Paket Layanan, diharapkan Q1 / Q2 '13
Piotr Kaminski

@acki tidak ada aturan harga saat ini, terima kasih untuk menyebutkan tho. itu bagus untuk diketahui
Sander Mangel

Jawaban:


27
  1. Dari pengalaman pribadi, nonaktifkan modul Mage_Rss yang memaksa 'cache clean' 4 kali dalam proses checkout - sangat mahal jika Anda menggunakan cache filesystem, mungkin masih mahal jika Anda menggunakan database atau memcached.

  2. CE Only Disable Mage_Downloadable untuk alasan yang sama selama Anda tidak menggunakan produk yang Dapat Diunduh, ini akan mempercepat tindakan checkout dan troli ketika Anda memiliki banyak item di dalam troli karena ada pengamat pada hal-hal seperti checkout_type_onepage_save_order_afteryang menggandakan waktu respons dengan # item dalam gerobak.

  3. Hubungkan xhprof / xhgui dan lakukan profiling.


Terima kasih XHProf dan XHGui terdengar seperti proyek akhir pekan yang menyenangkan untuk menyelam
Sander Mangel

1
Anda harus benar-benar mencoba menonaktifkan mage_rss atau mengomentari pengamatnya. mempercepat pesanan segera disimpan
STANISLAS PIERRE-ALEXANDRE

1
Saya ingin mendengar tanggapan langsung jika trik penonaktifan Mage_Rss berfungsi untuk OP
philwinkle

2
Saya ingin menunjukkan bahwa EE memerlukan Mage_Downloadable sebagai ketergantungan:Module "Enterprise_PricePermissions" requires module "Mage_Downloadable
philwinkle

1
Saya tidak pernah melaporkan kembali dan untuk itu saya minta maaf. Menonaktifkan Mage_Rss memang mempercepatnya, menonaktifkan Mage_Downloadable tidak menghasilkan peningkatan kinerja yang penting, tetapi saya harus mengatakan saya tidak melakukan patokan yang 'tepat', hanya beberapa kali berjalan di browser saya.
Sander Mangel

4
  • Tetapkan indeks Anda menjadi manual.
  • Nonaktifkan penyimpanan tag cache

Kedua perubahan ini akan memiliki dampak BESAR pada kinerja karena mencegah Magento membuang-buang cache dan mengindeks ulang setiap kali pesanan dilalui.

Meskipun harus dibayar mahal, kontennya mungkin basi - level stok, dll.


terima kasih, tingkat stok yang salah adalah masalah di sebagian besar toko tho. Tapi sakit perlu diingat untuk toko-toko tanpa manajemen stok!
Sander Mangel

2

Jika Anda ingin menyelesaikannya dengan cara eksperimental, ada ekstensi dari hackathon magento pertama di munich, Jerman:

https://github.com/magento-hackathon/MongoDB-OrderTransactions

Mereka mengantri pesanan ke mongo db, idenya adalah, jika server mysql bebas dari beban untuk menuliskannya kembali. Tapi saya tidak tahu sejauh mana proyek ini siap. Afaik mengerjakan semua penulisan, tetapi tidak menulis kembali.


Terima kasih, saya benar-benar melihat solusi noSQL dan ini mungkin titik awal yang bagus!
Sander Mangel

2

Saya tidak tahu Versi Magento CE yang sedang Anda perjuangkan. Tapi saya punya masalah kinerja serius dengan CE 1.6 saya.
Alasan: Indeks salah dan hilang. Mereka di mana diperbaiki di CE 1.6.2
Anda mungkin memeriksa apakah itu membantu Anda.
Saya mengurangi waktu checkout untuk 38 baris dengan total 73 item dari 123 detik menjadi 4 detik !!!!

Ini dia:

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/* Foreign Keys must be dropped in the target to ensure that requires changes can be done*/

ALTER TABLE `core_url_rewrite` 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID`  , 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID`  ;


/* Alter table in target */
ALTER TABLE `catalog_category_entity_varchar` 
DROP KEY `MAGMI_CCEV_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `catalog_product_bundle_stock_index` 
DROP KEY `PRIMARY`, ADD PRIMARY KEY(`entity_id`,`website_id`,`stock_id`,`option_id`) ;


/* Alter table in target */
ALTER TABLE `catalog_product_entity_media_gallery` 
DROP KEY `MAGMI_CPEM_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `core_url_rewrite` 
CHANGE `id_path` `id_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Id Path' after `store_id` , 
CHANGE `request_path` `request_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Request Path' after `id_path` , 
CHANGE `target_path` `target_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Target Path' after `request_path` , 
CHANGE `is_system` `is_system` smallint(5) unsigned   NULL DEFAULT 1 COMMENT 'Defines is Rewrite System' after `target_path` , 
CHANGE `options` `options` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Options' after `is_system` , 
CHANGE `description` `description` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Deascription' after `options` , 
CHANGE `category_id` `category_id` int(10) unsigned   NULL COMMENT 'Category Id' after `description` , 
CHANGE `product_id` `product_id` int(10) unsigned   NULL COMMENT 'Product Id' after `category_id` , 
ADD KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID`(`product_id`) , 
DROP KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` , 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID` 
FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE , 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID`  ;


/* Alter table in target */
ALTER TABLE `eav_attribute` 
DROP KEY `MAGMI_EA_CODE_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `eav_attribute_option_value` 
DROP KEY `MAGMI_EAOV_OPTIMIZATION_IDX` ;


/* The foreign keys that were dropped are now re-created*/

ALTER TABLE `core_url_rewrite` 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` 
FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE , 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID` 
FOREIGN KEY (`store_id`) REFERENCES `core_store` (`store_id`) ON DELETE CASCADE ON UPDATE CASCADE ;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

1

Cara terbaik untuk mempercepat operasi basis data besar adalah memiliki basis data Anda di server sendiri yang dioptimalkan untuk penggunaan basis data. Tidak banyak yang dapat ditingkatkan dalam kode area checkout (meskipun jenis produk tertentu, seperti Dapat Dikonfigurasi, benar-benar dapat menghambat proses mengutip) karena sangat sedikit yang dapat di-cache dengan aman.


Terima kasih, takut untuk itu. Ini sudah merupakan instalasi khusus dengan server DB yang terpisah. Semoga mereka akan mengoptimalkan checkout di Mage 2 :)
Sander Mangel

1
2.0 Termasuk banyak penulisan ulang sejauh ini, jadi kami bisa berharap. Jujur, model produk itu sendiri banyak yang membuat checkout lambat - itu harus beralih pada contoh jenis untuk setiap produk sambil membuat penawaran / mengkonversi ke pesanan, dan itu bisa menjadi proses yang mahal.
Andrew Quackenbos

1

Mungkin melihat membagi membaca dan menulis di DB Anda. Anda harus segera menyiapkan replikasi yang merupakan hal yang selalu membuat saya khawatir melakukannya meskipun orang lain mungkin memiliki lebih banyak info tentang cara terbaik untuk mengkonfigurasinya.


Hm tidak yakin apakah itu solusi yang dapat diandalkan untuk jujur, sepertinya perubahan data yang tidak lengkap cukup besar. Idenya sangat bagus ya!
Sander Mangel

Saya setuju sampai batas tertentu dan mengakui bahwa saya tidak pernah benar-benar melakukannya sendiri walaupun saya melihat banyak orang menulis posting blog, dll. Mereka menyarankan mereka telah melihat peningkatan yang nyata dalam kinerja. Jika saya dapat menemukan beberapa tolok ukur dll Saya akan mempostingnya.
Richard Cleverley

Terima kasih Richard, saya sakit berbicara dengan perusahaan hosting saya juga tentang ini. Mereka memiliki lebih banyak pengalaman dengan hal-hal semacam ini yang saya pikir. Jika saya memiliki satu informasi lagi saya akan mempostingnya
Sander Mangel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.