Saya mencoba mencari cara untuk meningkatkan kinerja Magento ketika jumlah situs web / toko melebihi 1k, dan tujuan saya adalah sekitar 10k. Inilah beberapa pertanyaan; setiap tips / bantuan sangat welcome!
Menambahkan situs / toko baru lambat;
Saya berkomentar $ this-> cleanModelCache () di _afterSave () di Mage_Core_Model_Abstract, dan situasinya tampak lebih baik tetapi semakin lambat dengan meningkatnya jumlah situs web / toko. Dan saya tidak tahu apa yang akan mempengaruhi seluruh sistem di masa depan.Panggilan api menjadi lambat.
Salah satu proses utama adalah melakukan pemesanan; model khusus saya berurusan dengannya dengan memproses beberapa data, dan pada dasarnya menggunakan model penjualan / penawaran dan model penjualan / service_quote. Prosesnya dimulai dengan Oauth. Oauth dan penempatan pesanan membutuhkan waktu lebih lama ketika jumlah situs web / toko bertambah, dan konsumsi memori tampaknya lebih besar. Apakah ini ada hubungannya dengan Mage memuat konfigurasi xml, dan fakta bahwa data konfigurasi semakin besar dengan semakin banyaknya situs web?Membuka n98-magerun dev: konsol lebih lama; tidak tahu penyebabnya.
Menyimpan konfigurasi dari panel admin membutuhkan waktu lebih lama; tidak tahu bagaimana memperbaikinya.
Apakah mungkin untuk merekonstruksi cara Magento menghasilkan dan memuat data konfigurasi untuk menurunkan konsumsi memorinya? Apakah ini salah satu faktor yang menyebabkan masalah kinerja untuk situasi saya?
Contoh Magento saat ini: Versi = Magento EE 1.14.2.4;
Konfigurasi cache aktif; cache lainnya tidak aktif;
Menggunakan Mysql 5.6 dan MongoDB (untuk catalog_category_entity, catalog_product_entity, core_website);
jumlah situs web = jumlah toko = jumlah tampilan = 1024;
jumlah produk = 4501;
Terima kasih sebelumnya!
sumber
Jawaban:
Salah satu alasannya menjadi lambat adalah karena konfigurasi untuk setiap toko diduplikasi dari / config / situs web dan / config / global dan kode untuk melakukan itu tidak efisien. Setiap perubahan pengaturan mungkin berakhir menyebabkan beberapa 10 menit, jika bukan jam, dari penurunan kinerja dan throughput. Menjadikannya lebih efisien pada dasarnya berarti Ben Marks akan mengejar Anda ... dan tidak dengan cara yang baik.
JIKA Anda akan turun rute ini, cara termudah adalah dengan memiliki 10k instalasi Magento dan memiliki semacam broker yang mendelegasikan permintaan ke situs web yang sesuai. Meskipun itu, tentu saja, tergantung pada apa use case Anda sebenarnya.
[ditambahkan]
Bergantung pada use case Anda mungkin dapat menggunakan kategori sebagai pseudo store. Anda bisa secara teknis menggunakan layout XML untuk mengubah tema per toko. Tapi kemudian Anda akan mengalami keterbatasan checkout. Semua toko perlu membagikan checkout.
Either way, toko 10k Magento bisa dilakukan, karena itu bukan tidak mungkin. Tapi itu akan menjadi jalan yang sulit, jalan apa pun yang Anda pilih.
sumber
Anda dapat mencoba meretas inti dan mengaktifkan pemisahan cache situs web. Anda dapat mencoba meretas basis data dan menyimpan informasi konfigurasi dalam memori. Anda dapat mencoba mengganti cache konfigurasi dengan sesuatu yang lebih pintar - katakanlah caching informasi dari file xml [yang statis dan berlaku untuk semua situs web dan toko] sambil mengambil alih data secara dinamis.
Saya seorang pria server, jadi saya akan pergi dengan mucking dengan database. Terutama karena itu sepele untuk dilakukan.
Jika Anda memiliki kendali atas server basis data Anda: Ganti nama tabel core_config_data menjadi core_config_data_offline Buat tabel core_config_data baru menggunakan mesin penyimpanan MEMORY http://dev.mysql.com/doc/refman/5.7/id/memory-storage-engine.html Salin semua data dari core_config_data_offline ke core_config_data
Setup pekerjaan cron untuk memeriksa untuk melihat apakah core_config_data ada, jika itu menyalin semua data dari sana ke core_config_data_offline. Jika tidak, buat dan salin semuanya dari core_config_data_offline ke core_config_data
Matikan cache config. Dengan cache konfigurasi diaktifkan, Anda hanya mendapatkan peningkatan kinerja untuk pertama kali data konfigurasi dibaca dari database - setelah itu ada dalam cache dan Anda menderita. Pada sisi negatifnya, file xml tidak lagi di-cache, jadi Anda memperdagangkan hit kinerja unserialisasi data konfigurasi besar untuk hit kinerja dari penguraian banyak file xml.
Anda mungkin juga ingin bereksperimen dengan mengubah file Mage / Core / Model / Config.php dan mengaktifkan cache masing-masing situs web. Secara default setiap menyimpan data konfigurasi khusus di-cache secara individual. Semua data konfigurasi situs web di-cache dalam satu objek.
Perhatikan bahwa ini hanya untuk konfigurasi yang menimpa [pengaturan admin]. Jadi, jika Anda melakukan semua perubahan konfigurasi di tingkat toko yang sudah Anda atur. Jika Anda menggunakan "warisan dari situs web" dan membuat sebagian besar perubahan konfigurasi khusus toko Anda di tingkat situs - maka cache berisi setiap situs web. Dengan membaginya, Anda dapat memecahkannya lebih baik. protected $ _cacheSections = array ('admin' => 0, 'adminhtml' => 0, 'crontab' => 0, 'install' => 0, 'store' => 1, 'websites' => 0);
untuk
sumber