Apa yang Anda gunakan sebagai Server MySQL untuk Magento?
- MySQL (Oracle)
- Percona
- lainnya (MariaDB)
Percona menyediakan serangkaian perbaikan untuk penyimpanan InnoDB yang digunakan oleh Magento secara intensif, tetapi peningkatan ini membuat perbedaan ketika menjalankan toko Magento.
Bagaimana Anda meningkatkan kinerja (pendekatan umum tentang arsitektur, bukan info spesifik tentang pengaturan variabel spesifik suka innodb_flush_log_at_trx_commit=2
dan sebagainya). Saya tahu NBS mencoba-coba replikasi master-master tetapi itu tidak stabil.
Saya memang menghadapi beberapa masalah dengan replikasi master-slave dengan membaca diarahkan ke budak, karena ada beberapa keterlambatan dalam mereplikasi data.
Pindah sebanyak mungkin dari MySQL? (cari solr dan sebagainya).
performance
mysql
FlorinelChis
sumber
sumber
Jawaban:
Anda memasuki dunia optimasi yang luas dan luas di sana-sini tentu saja tidak ada satu pendekatan yang cocok untuk semua.
Tentukan kinerja
Apakah maksud Anda waktu pemuatan halaman untuk satu pengguna, atau kapasitas total / total konkurensi? Keduanya sangat berbeda - dan tidak terkait erat. Sangat mungkin untuk memiliki toko cepat dengan kapasitas terbatas; atau toko yang lambat dengan banyak kapasitas.
Jadi saat menyikapi salah satu jenis kinerja:
Anda harus mengatasi masing-masing secara independen dengan solusi mereka sendiri - terutama karena masing-masing memiliki hambatan sendiri.
Mari kita membuat asumsi Anda dengan host yang kompeten yang telah mengkonfigurasi aspek-aspek lain dari server Anda secara optimal untuk toko Anda.
Waktu buka halaman yang dirasakan pengguna tunggal
Apakah MySQL yang menjadi hambatan
. Tidak secara langsung. Ini semua tentang latensi, dalam sebagian besar kasus ketika menguji waktu buka halaman - hanya cache yang akan dipukul. Jadi kuncinya di sini adalah untuk meminimalkan latensi.
Tetapi perubahan ini akan memiliki dampak fraksional pada waktu buka halaman - di mana hambatannya benar-benar di tempat lain.
Aplikasi adalah hambatannya. Bukan perangkat lunak. Jadi hanya meningkatkan core-code atau membuat template Anda lebih ringan akan memiliki efek yang jauh lebih dramatis pada kinerja daripada perubahan konfigurasi MySQL APA PUN .
Apa yang tidak akan kita pedulikan
s1 Untuk server database terpisah saja. Tidak berlaku untuk server DB lokal.
Total kapasitas / konkurensi
Apakah MySQL yang menjadi hambatan
Mungkin. Tetapi hanya sekali Anda telah memakukan kinerja dan kapasitas PHP Anda ke titik di mana MySQL memperlambat segalanya. Jika Varnish dan FPC Anda telah terkonfigurasi dengan benar (jangan mulaii kami tentang berapa banyak upaya gagal yang telah kita lihat) - maka MySQL menjadi hambatan.
Jadi selain modifikasi di atas.
Apa yang tidak akan kita pedulikan
Baca vs Skalabilitas Tulis
Paragraf terakhir benar-benar mengarah pada bidang utama skalabilitas baca dan tulis. Pembacaan skala dapat dilakukan tanpa batas tanpa terlalu banyak komplikasi dengan penambahan lebih banyak budak.
Mengingat rasio Magento tentang Baca untuk Menulis adalah sekitar 0,1% - mengingat menulis seharusnya tidak terlalu menjadi perhatian. Itu sebabnya saya tidak repot menyebutkan MySQL Cluster dan fitur-fiturnya pintar seperti auto-sharding (memisahkan tabel ke mesin yang terpisah).
Perangkat keras, perangkat keras, perangkat keras
Perangkat keras adalah jawaban tercepat untuk perbaikan, jadi saya sengaja tidak menyebutkannya di atas dalam kedua skenario.
Tetapi semua perubahan perangkat lunak di dunia tidak akan membuat perbedaan jika perangkat keras Anda tidak memadai. Itu bisa berarti ...
Saat ini, ada langit-langit sangat tinggi pada seberapa tinggi Anda dapat benar-benar skala pada perangkat keras. Mari kita mengabaikan mitos penskalaan tak terbatas "di awan" karena perangkat keras cloud cenderung cukup biasa-biasa saja. Contohnya model andalan Amazon hanya 12 Cores @ 3.3GHz. Tetapi di luar ini, ada beberapa server yang sangat kuat yang tersedia - server teratas kami memiliki 160 core dan 2TB (ya, Terabytes) RAM. Kami belum melihat ada yang melampaui kemampuan itu.
Jadi Anda memiliki ruang lingkup besar untuk penskalaan vertikal, bahkan sebelum Anda perlu mempertimbangkan penskalaan horizontal.
Target yang selalu bergerak
Layak disebutkan bahwa dalam mengejar kinerja, bottleneck akan selalu bergerak.
Untuk toko Magento stok.
Nyalakan cache. PHP adalah penghambatnya.
Tambahkan cache backend. PHP adalah hambatannya.
Tambahkan cache halaman penuh level aplikasi. PHP adalah penghambatnya.
Tambahkan cache front-end tingkat server (mis. Varnish). MySQL adalah penghambatnya.
Tambahkan mesin pencari alternatif / navigasi berlapis (mis. SOLR / Sphinx). PHP adalah hambatan
Tambah server aplikasi lebih banyak. MySQL adalah hambatannya
Tambah budak MySQL. Cache front-end adalah hambatan
Tambah lebih banyak server cache front-end. PHP adalah hambatan
Tambah server aplikasi lebih banyak. SOLR / Sphinx adalah hambatannya
Dan sebagainya.
Ini cukup banyak menjadi kasus pengulangan bilas. Tetapi yang jelas untuk dipahami adalah bahwa MySQL tentu saja bukan pelabuhan panggilan pertama untuk optimasi - dan benar-benar hanya berperan ketika MySQL mengkonsumsi lebih banyak CPU secara proporsional ke PHP - dan ini HANYA terjadi ketika FPC dan Varnish digunakan dan server hanya memproses pesanan dan tidak banyak yang lain (karena semuanya ada dalam cache).
Jangan membuat perubahan secara membabi buta
Cukup menambahkan budak MySQL karena Anda membaca kami katakan di atas bahwa itu akan membantu, dapat biaya kinerja dan keandalan Anda pada tingkat yang sangat besar. Jaringan yang macet, server slave dengan spesifikasi rendah atau bahkan pengaturan yang tidak tepat dapat menyebabkan masalah replikasi yang dapat membuat toko Anda lebih lambat dari awalnya - atau menyebabkan masalah sinkronisasi antara Master dan Slave.
Untuk meletakkan segala sesuatu dalam perspektif - beberapa contoh dunia nyata.
Contoh 1 - 300 pesanan per jam
Kami telah menggunakan perangkat keras berikut untuk melayani 300 pesanan per jam ; dan hanya pada titik kritis - kami kemudian merasa perlu menambahkan server MySQL khusus dan budak MySQL lokal.
1 Server
CPU: 2x Intel E5-4620
RAM: 64GB HDD: 4x 80k IOP / s SSD
RAID: Perangkat Keras RAID 10
Versi Magento: Magento EE
OS: MageStack
Selama seluruh waktu, rata-rata beban tetap di bawah 3,00.
Contoh 2 - 180 pesanan per jam
Hanya dua hari yang lalu, klien baru kami dengan mudah menyerap lonjakan lalu lintas yang besar. Memproses 180 pesanan per jam dengan server tunggal dan Edisi Komunitas Magento .
1 Server
CPU: 2x Intel E5-4620
RAM: 64GB HDD: 4x 80k IOP / s SSD
RAID: Perangkat Keras RAID 10
Versi Magento: Magento CE
OS: MageStack
Situs web: Wellgosh.com
Selama keseluruhan, rata-rata memuat tetap di bawah 6,00. Beban lebih tinggi dalam skenario ini dan itu turun ke beberapa faktor.
Dan mengingat hal ini, kami masih punya statistik terperinci untuk memberikan umpan balik melalui grafik. Ini menceritakan kisah luar biasa tentang bagaimana beban didistribusikan di antara komponen-komponen utama dari arsitektur Magento yang terpisah (penyeimbang beban, server web, server db dll. - menggunakan MageStack ).
Jadi dari depan ke belakang ... tanggal yang ingin Anda lihat adalah pukul 12:00 pagi pada 22 Februari.
Paket Firewall
Pernis Lalu Lintas
Lalu Lintas Nginx
Beban MySQL
Beban CPU
Dan yang terpenting, distribusi beban
Gambar ini benar-benar menceritakan semuanya. Dan itu adalah MySQL tentu bukan beban - setidaknya belum. Jadi saran kami, fokuskan kekhawatiran kinerja Anda di tempat lain, kecuali jika Anda memproses lebih dari beberapa ribu pesanan per jam.
Dan dalam ringkasan
Membuat perubahan kinerja bukan "satu ukuran cocok untuk semua". Ini adalah kasus menganalisis kemacetan Anda saat ini dan membuat perubahan / penyesuaian halus agar sesuai dengan toko dan infrastruktur Anda.
Namun selain kinerja, ada manfaat lain menggunakan Percona
Kami menggunakan Percona XtraDB, hampir secara eksklusif. Kami menjalankan build yang dikompilasi khusus dari MySQL yang kami kembangkan secara khusus untuk Magento dan telah berkonsultasi dengan Percona selama proses tersebut. Tapi bukan hanya kinerja yang memengaruhi pilihan ini.
Dan banyak lagi. Jadi menggunakannya melalui MySQL memiliki kelebihan lain selain kinerja. Bahkan - MySQL adalah dan selalu menjadi yang paling sedikit dari perhatian kami dalam mengejar kinerja dan stabilitas.
Atribusi: wellgosh.com , sonassi.com , iebmedia.com .
sumber