Mengapa Magento Tidak Dapat Mematikan Cache Saat Redis Gagal

9

Saya bekerja dengan Magento 1.9.0.1, dan setiap saat server Redis kami yang meng-host cache Magento, (AWS ElastiCache) akan turun. Ketika ini terjadi, Magento fatal kesalahan sampai Redis tersedia lagi.

Ini mungkin pertanyaan yang sulit dijawab dengan cepat, tetapi yang saya ingin tahu adalah mengapa Magento tidak dapat bertindak seperti cache dinonaktifkan ketika tidak dapat terhubung ke Redis, alih-alih kesalahan fatal?

Saya tidak mengetahui pengaturan atau modul apa pun yang memberi Magento kemampuan ini, tetapi di permukaan sepertinya tidak sulit. Magento menggunakan local.xmluntuk mencari tahu bagaimana menghubungkan ke database, dan cache backend. Itu kemudian terhubung ke database dan melihat opsi cache untuk mengetahui apakah akan menggunakan cache atau tidak. Jika diberitahu oleh database untuk menggunakan cache yang diberikan, ia akan mengganti beberapa flag (mungkin variabel global atau properti dari singleton,) dan menggunakan backend cache untuk sisa permintaan. Tidak bisakah Magento dibuat untuk mematikan ini kembali selama permintaan itu jika terjadi kesalahan koneksi?

Situs lambat lebih baik daripada kesalahan fatal.

Sunting: Jelas beberapa orang tidak mengerti apa yang saya minta atau tidak benar-benar membaca posting ini.

  1. Apakah ada modul yang akan memberi Magento kemampuan untuk berfungsi tanpa kesalahan fatal ketika Redis tidak tersedia, ketika Redis digunakan sebagai metode penyimpanan cache utama.

  2. Jika tidak, bisakah seseorang memberi tahu saya mengapa hal ini tidak mungkin atau sangat sulit?

Tyler V.
sumber
Ini pertanyaan yang sangat bagus. Saya telah menghadapi masalah yang sama dan memiliki pertanyaan yang sama. Mengapa magento tidak dapat menyadari bahwa server Redis tidak berfungsi dan beralih ke cache magento tradisional alih-alih secara fatal memunculkan kesalahan.
Vinu D
1
@ Tyler V, memberikan suara untuk membuka kembali, tidak melihat bagaimana hal ini tidak jelas atau topik off sepertinya masalah yang menarik dan pertanyaan yang valid. Saya tidak tahu tentang modul yang memecahkan masalah ini, mungkin bukan sesuatu yang Magento lakukan dengan mudah di luar kotak dan akan membutuhkan modul yang dikembangkan untuk ini. Saya kira Anda perlu meneliti bagaimana cache dipanggil di Magento sebelum mengembangkan modul.
Holly
Solusi paling sederhana adalah cron yang mem-ping Redis dan jika tidak ada jawaban, swap local.xml dengan varian yang menggunakan caching file.
Paul Grigoruta

Jawaban:

2

Yang harus Anda lakukan hanya memperbaiki 3 masalah / masalah:

  1. Mengapa redis gagal? Lalu lintas yang padat, kesalahan, masalah memori, jaringan?
  2. Waktu habis dan coba lagi pengaturan untuk koneksi?
  3. Stack Anda mutakhir?

Jelas Anda dapat mengubah beberapa kode dan menempatkan logika Anda alih-alih kesalahan.

MagenX
sumber