Troli menjatuhkan semua item / sesi kereta kosong

27

Situs yang saya kelola tiba-tiba (mungkin 2 minggu lalu - dari statistik GA, dan baru dilaporkan sekarang) mulai menjatuhkan item keranjang saat Anda melihat keranjang, atau pergi ke checkout.

Bagian atas 'mini-cart' menunjukkan item dalam dropdown, sampai Anda menelusuri ke troli / checkout, dan Anda kemudian berakhir di troli, dengan pesan 'Tidak ada item di troli Anda'.

Sepertinya masalah sesi. Itu tidak terjadi ketika login.

Menghapus semua opsi validasi sesi di 'system-> web-> pengaturan validasi sesi', dan mengaktifkan yang mengatakan 'Gunakan SID di Frontend'. Ini memang memecahkan masalah, tetapi karena pengaturan ini tidak berubah dalam 3 bulan terakhir, saya tahu ada beberapa masalah mendasar.

Ini kemudian menunjuk ke masalah dengan masalah sore-id? Entah bagaimana situs ini kehilangan id toko apa itu, dan menjatuhkan data sesi / keranjang? Mungkin beberapa pengamat / acara / penulisan ulang oleh beberapa modul.

Saya tidak dapat mereplikasi masalah pada pengembang lokal, atau di server UAT. DB pada UAT adalah 2 minggu dari live, jadi ini bisa menunjukkan masalah / pengaturan db?

Hal yang saya coba: Saya sibuk menarik live db saat ini ke UAT untuk mendapatkan yang terbaru, untuk melihat apakah saya dapat mereplikasi masalah di sana. akan memperbarui ketika itu selesai.

Setelah saya dapat mereplikasi masalah di area non-live, saya akan secara sistematis menonaktifkan modul, melihat apakah ada sesuatu yang mucking dengan id toko (dimulai dengan MageMonkey dan sweettooth, karena mereka diperbarui 2 minggu yang lalu)

Pertanyaannya adalah - apa lagi yang bisa saya coba? Adakah petunjuk ke tempat saya dapat memecahkan beberapa breakpoints dan langkah kode untuk melihat apakah saya dapat melacak masalah ini?

tidak ada sistem cache tambahan seperti pernis atau memcache diinstal. Server adalah instalasi cpanel standar. menguji pada uat saya menonaktifkan semua cache.

pembaruan lebih lanjut: akan terlihat bahwa ketika saya beralih ke tema default saya tidak dapat mereproduksi. Saya secara sistematis memindahkan folder override tema kembali.

Saya juga menggunakan git untuk melacak kode dan masalahnya tetap ada di setiap hash.

Pembaruan: Sudah lama sejak saya punya waktu untuk ini. Beban kerja tinggi.

Saya memindahkan sesi ke file berdasarkan dan masalah telah hilang. Karena klien tidak bermaksud menggunakan beberapa server dalam waktu dekat, dan karena beban kerja saya, ini dibiarkan begitu saja. Kemungkinan besar akan kembali menggigit saya nanti.

Dukungan Magento menyarankan masalah ini terkait dengan modul gigi manis memperluas kelas sesi, tapi saya telah menonaktifkan modul itu, dan masalah tetap ada.

akan memperbarui ketika saya mendapatkan hasil lebih banyak.

ProxiBlue
sumber
'Gunakan SID pada Frontend' sebenarnya tidak memperbaiki masalah. Tampaknya masalah ini acak. Bekerja dengan baik untuk beberapa sesi, tetes untuk yang lain.
ProxiBlue
Saya dapat menyalin ini dengan andal di UAT sekarang. Sepertinya 8/10 upaya untuk menambahkan ke keranjang memiliki masalah ini. Kemudian sesi 'tongkat' dan semuanya berfungsi seperti biasa. Dieliminasi SweetTooth dan MageMonkey sebagai alasan (setelah mereka ditingkatkan) Dikonfirmasi itu adalah masalah sesi. Ketika saya menambahkan ke troli, saya memiliki sesi dengan satu ID, ketika saya pergi untuk melihat troli, saya mendapatkan id sesi baru.
ProxiBlue
Beberapa rekan menemukan masalah yang hampir sama. Saya tidak tahu persis apa yang menyebabkan masalah ini (saya tahu itu terkait dengan memcache dan / atau pernis), tetapi solusinya adalah menyiapkan penyeimbang beban untuk server. Jadi, Anda harus berbicara dengan administrator server Anda tentang ini.
Vlad Preda
1
Apa versi magento? Juga apa yang Anda gunakan sebagai penyimpanan sesi? Apakah beralih ke file atau database masing-masing membuat perbedaan?
Kristof di Fooman
@Fooman Hai, EE 1.11.2.0, menggunakan sesi DB, belum mencoba bertukar file, akan melaporkan kembali hasil apa yang memberi.
ProxiBlue

Jawaban:

8

Di kotak cPanel kami, aset yang hilang melayani seluruh halaman Magento.

Default cPanel untuk ErrorDocument 404 /404.shtmltetapi /404.shtmltidak ada di root dokumen Magento, sehingga .htaccess dieksekusi lagi dan dialihkan /404.shtmlke index.php(menggunakan mod_rewrite).

.Htaccess default Magento harus menentukan 404, 500, dan penangan kesalahan lainnya secara eksplisit.

Untuk memperbaiki beahviour ini, kami menambahkan yang berikut ke .htaccess kami:

ErrorDocument 404 /errors/404.php

Kami mungkin juga harus menambahkan 500-an:

ErrorDocument 500 /errors/500.php

jmlnik
sumber
@ ProxiBlue apakah ini menyelesaikan masalah Anda karena itu adalah jawaban yang diterima? Saya memiliki masalah yang hampir sama. Masih tidak yakin apa yang menyebabkannya.
dchayka
9

Apakah Anda menggunakan Varnish di server?

Kami telah melihat sejumlah implementasi di mana orang menghapus cookie SEBELUM mengambil konten statis (gambar / css / js) - jadi jika gambar / js / css tidak ada; itu memuat bootstrap Magento dan 404's - ini menghapus sesi cookie dan situs sepenuhnya.

Ben Lessani - Sonassi
sumber
Tidak pernis, berharap sesederhana itu: '(
ProxiBlue
Hai punya masalah yang sama mungkin saya tahu apa solusinya?
Kandarp B Patel
@Ben, bisakah Anda menjelaskan hal ini?
burntblark
6

Satu masalah mungkin Magento tidak menyimpan data sesi ketika beralih dari HTTP ke HTTPS . Pastikan pengaturan yang diperlukan untuk SSL dll. Diatur dengan benar.

Masalah lain mungkin ISP pelanggan mengubah alamat ip mereka, seperti yang didokumentasikan di sini .

Untuk memperbaiki masalah ini:

Ubah pengaturan Validasi Sesi di Admin Magento, ditemukan di bawah System> Configurations> Web , menjadi 'no' pada semuanya kecuali " Validasikan HTTP_USER_AGENT ." Setelah melakukan ini, buka System> Cache Management dan segarkan cache konfigurasi untuk menerapkan perubahan.

pzirkind
sumber
Keranjang masih dalam http, jadi bukan masalah http-> https.
ProxiBlue
1
Itu terjadi pada kami, di lingkungan UAT kami juga, dan kami memiliki ip tetap. Hargai saran-sarannya.
ProxiBlue
5

Kami telah mengamati masalah ini ketika ada gambar yang hilang pada halaman, terutama jika gambar tersebut hilang dari semua halaman misalnya di header atau footer. Tampaknya halaman 404 yang dikembalikan Magento atau server web memecah cookie sesi frontend, menyebabkan hilangnya sesi. Ada dalam daftar kami untuk diperbaiki, tetapi solusinya adalah untuk memastikan tidak ada gambar yang hilang ...

Jonathan Day
sumber
Saya senang itu tidak terjadi pada beberapa klien kami. Lebih dari 404 daripada aku mau mengakuinya.
philwinkle
2
@jonathanday Magento tidak akan melakukan ini, tetapi Varnish yang dikonfigurasi dengan buruk akan melakukannya.
Ben Lessani - Sonassi
@sonassi, dapatkah Anda memperluas pada Varnish pls yang tidak terkonfigurasi dengan baik? Kami mengalami masalah yang sama. Memperbaiki halaman 404 telah memperbaiki masalah ini tetapi ingin tahu apakah kita dapat mengonfigurasi Varnish dengan lebih baik!
jmlnik
Sebenarnya inilah yang terjadi. Saya entah bagaimana melewatkan jawaban ini! Faktanya adalah bahwa magento tidak boleh mendorong versi pengontrol dari halaman 404, tetapi halaman 404 statis.
ProxiBlue
1
Saya mengirim jawaban yang menjelaskannya.
Ben Lessani - Sonassi
1

Ini bisa menjadi masalah tanggal cookie / server. Hal pertama yang perlu diperiksa adalah header cookie. Periksa header (menggunakan sesuatu seperti Firebug, Charles atau Fiddler).

Anda harus melihat sesuatu seperti berikut:

Set-Cookie  frontend=9dhtlgf1qmo6loqksvvmqjd625; expires=Thu, 31-Jan-2013 05:01:13 GMT; path=/; domain=.foo.com; HttpOnly

Jika nilai untuk bidang kedaluwarsa di masa lalu, maka kemungkinan waktu di server Anda salah. Ini bisa terjadi ketika layanan seperti ntpd gagal memulai. Jika itu masalahnya, periksa waktu di server. Jika waktu tidak aktif, periksa status ntpd (atau layanan daemon mana saja yang menjaga waktu server diperbarui).

beeplogic
sumber
Diperiksa, tanggal / waktu server jika baik, tanggal / waktu cookie baik-baik saja :(
ProxiBlue
1

Pengumpulan sampah PHP sedang membersihkan sesi sebelum waktunya. Saya telah melihat ini sendiri di situs dengan lalu lintas tinggi .

Beberapa kiat pemecahan masalah:

  • Berapa umur sesi tertua Anda? Untuk mengetahuinya:ls -laht [mageroot]/var/session/ | tail - jika Anda tidak memiliki sesi yang lebih lama dari beberapa minggu atau lebih, pengumpulan sampah cenderung disalahkan
  • Pindahkan sesi ke penyimpanan data lain untuk sementara - MySQL atau Memcached, misalnya. Apakah masalah teratasi?
  • Apakah ini terjadi pada server pengembangan? Jika tidak, dan semua hal adalah sama, bisa jadi tingkat lalu lintas memicu berakhirnya sesi prematur atau pengumpulan sampah

Saya telah memperbaiki ini dalam salah satu dari dua cara:

  1. Di .htaccess Anda, tambahkan php_value session.gc_maxlifetime 2592000
  2. Di php.ini Anda, setel session.gc_maxlifetime

Lebih banyak bacaan: http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

Philwinkle
sumber
1
Saran yang bagus Akan mencoba dalam beberapa hari
ProxiBlue
1

Kami memiliki masalah serupa. Dalam kasus kami, itu adalah konfigurasi Varnish (Seperti Ben Lessani - menyarankan). Kami telah mengonfigurasi Varnish kami ke cache 404 untuk 120an sehingga server kami tidak akan dipalu ketika ada kesalahan 404 pada halaman.

Jadi masalahnya adalah untuk 404an Magento merespons dengan Set-Cookie di header untuk cookie frontend dan frontend_cid, yang mengatur ulang sesi pelanggan.

Solusi kami untuk ini adalah menghapus Set-Cookies apa pun untuk 404 respons,

unset beresp.http.set-cookie;
Thanu
sumber
0

Hal-hal bodoh yang telah merusak sesi PHP untuk saya di masa lalu dan mungkin perlu diperiksa:

  • disk penuh
  • waktu server tidak akurat
xyphoid
sumber
:) memeriksa hal pertama disk, semua ok.
ProxiBlue
date fine :( tidak sesederhana itu, ugh [~ / public_html / var / log] # date Thu 31 Jan 11:55:49 WST 2013
ProxiBlue