Whats tujuan dari terkunciLoadData / pembuatan halaman yang tidak di-cache memakan waktu sekitar satu menit, dihabiskan dalam tidur

11

Saya pikir sejak pembaruan ke Magento 2.3.1 Saya memiliki masalah dengan memuat halaman yang tidak di-cache (selama pengembangan).

Saya melakukan blackfire.io jejak dan ternyata 42 detik dihabiskan di tidur di sini .

Sekarang saya bertanya-tanya apa tujuan dari ini. Saya kira saya sedang berlari dalam kondisi balapan?

Adakah yang pernah mengalami hal seperti ini sebelumnya?

Sunting: Tumpukan panggilan tampaknya melibatkan commercebug.

Alex
sumber

Jawaban:

8

Nah itu - pilihan? - Insinyur Magento dibuat.

Ini bukan jawaban, tetapi sepertinya fungsi itu menerima panggilan balik yang dimaksudkan untuk memuat data yang di-cache. Callback memeriksa apakah saat ini ada kunci di tempatnya. Jika tidak, itu akan mengunci, memuat data, dan kemudian melepaskan kunci. Jika ada blok di tempat, itu tidur selama 100,000mikrodetik (0,1 detik), dan kemudian memanggil loader lagi.

Jadi, berpikir keras, dugaan saya akan

  1. Mungkin jumlah permintaan lebih dari normal untuk fungsi ini
  2. Lebih tinggi dari waktu membaca normal dari cache Anda.
Alan Storm
sumber
7

mekanisme lockedLoadData perlu mengurangi beban di server.

Sebelumnya ketika cache konfigurasi dibersihkan di situs yang di-load semua klien telah menghasilkan informasi yang sama yang secara signifikan meningkatkan beban cpu / io.

Dengan lockedLoadData, hanya satu klien yang akan menghasilkan cache dan yang lain akan menunggu.

Lebih detail tentang cara kerjanya.

Panggilan fungsi pertama "dapatkan data" panggilan balik dan jika mendapat data dari sekadar mengembalikannya (jadi jika data dalam cache, kode berfungsi seperti sebelumnya dan tidak menggunakan kunci apa pun).

Jika data tidak tersedia dan kunci terkunci, maka dalam loop kami mencoba memuat data sampai data akan didapat atau kunci dihapus.

Jika tidak ada kunci maka kami membuat kunci dan menghasilkan data di simpan di cache dan menghapus kunci dan mengembalikan data

PS: Kami mengirim perubahan ini seperti tambalan untuk salah satu klien dengan beban hingga 20 kRPM dan berfungsi setidaknya 3 bulan, tanpa masalah. Jadi mungkin masalah dalam kustomisasi / modul Anda (misalnya jika mereka merusak mekanisme cache)

KAndy
sumber
Menarik ... Pokoknya dalam kasus saya ini berjalan gila. Saya men
Alex
sepertinya solusi yang sangat buruk, berarti semua pengguna menunggu akan membuat proses mereka tetap hidup .. mengapa mereka tidak bisa menggunakan kunci meja
OZZIE
@OZZIE apakah Anda lebih suka semua pengguna menghasilkan data, alih-alih tidur sampai selesai? Kami tidak memiliki sumber daya CPU matematika begitu gratis
KAndy