Kinerja situs, cache tidak berfungsi dengan baik

8

masukkan deskripsi gambar di sini

Saya menggunakan Modul Pencatatan Kinerja . Tangkapan layar di atas, satu hal aneh yang saya perhatikan bahwa Sisipkan Cache_bootstrap pada setiap halaman. Saat Anda membuka halaman mana pun (baik tema admin maupun tema tampilan depan) Masukkan cache dan kemudian hapus cache sedang berjalan. Ini berarti bahwa cache diatur dan dimusnahkan di setiap halaman dan sebenarnya tidak ada cache yang terjadi. Bagaimana saya bisa menjelaskannya lebih jauh? Untuk mendiagnosis masalah itu karena saat ini saya sedang mengerjakan kinerja situs.

masukkan deskripsi gambar di sini

Saya juga menggunakan Relik Baru untuk pemeriksaan kinerja. Ini juga menunjukkan bahwa beban basis data tinggi.

dan informasi my.cnf.

masukkan deskripsi gambar di sini

Tuan J
sumber

Jawaban:

3

Ukuran paket yang diizinkan Max bisa menjadi salah satu alasan hal ini terjadi, tetapi saya dapat melihat beberapa alasan mengapa mungkin ada hal lain dalam kasus ini.

  1. Anda tidak hanya memiliki menulis cache, Anda juga memiliki penghapusan cache eksplisit. Gagal menulis cache gagal hanya akan menghasilkan penulisan cache berulang dan kemudian cache gagal, tetapi tidak menghapus.
  2. Ini adalah tabel cache_bootstrap. Ada beberapa cache yang bisa menjadi besar tetapi biasanya tidak dari bin itu.

Alasan paling umum untuk pola ini adalah panggilan variable_set () yang terjadi pada setiap halaman. Lihat dari mana asal penghapus cache tersebut, baik dengan xhprof, dengan xdebug, dan atur breakpoint atau dengan menambahkan debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Saya cukup yakin bahwa Anda akan melihat panggilan variable_set () di sana.

Masalahnya adalah bahwa ada cache global tunggal untuk variabel. Setiap penulisan cache menghasilkan penghapusan cache dan permintaan berikutnya akan membacakan seluruh {variables}tabel dan menuliskannya kembali ke dalam cache.

Banyak pengembang tidak menyadarinya dan sedang melakukan hal-hal seperti "memastikan nilai" dengan memanggil variabel_set () secara langsung dalam file .module atau tempat lain yang dijalankan pada setiap permintaan.

Berdir
sumber
yeah .. itu benar sebagian besar pengembang bahkan saya tidak tahu tentang variabel_set () fakta yang Anda diskusikan. dan juga saya mengenal debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Terima kasih untuk itu. :)
Mr. J
3

Itu hanya sebuah hipotesis tetapi jika cache bootstrap Anda membangun kembali pada setiap halaman memuat itu mungkin terjadi bahwa beberapa modul Anda hilang dalam folder modul tetapi masih ada dalam tabel sistem. Pada setiap halaman, drupal mencoba menemukannya dan membangun kembali bootstrap_cache.

Coba modul pengoptimal Bootstrap , ini akan membantu untuk menemukan catatan tersebut dan menghapusnya.

Bogdan Tur
sumber