Site performansı, önbellek düzgün çalışmıyor


8

resim açıklamasını buraya girin

Ben kullanıyorum performans günlüğü Modülü . Ekran görüntüsünün üstünde, garip bir şey fark ettim ki her sayfada Cache_bootstrap ekle. Herhangi bir sayfaya gittiğinizde (hem yönetici teması hem de ön uç teması) Önbellek ekleyin ve ardından önbelleği silin çalışıyor. Bu, her sayfada önbellek ayarlandığı ve yok edildiği ve aslında hiçbir önbellek oluşmadığı anlamına gelir. Bunu nasıl daha ayrıntılı bir şekilde açıklayabilirim? Bu sorunu teşhis etmek için şu anda sitenin performansı üzerinde çalışıyorum.

resim açıklamasını buraya girin

Performans kontrolü için New Relic kullanıyorum . Ayrıca veritabanı yükünün yüksek olduğunu gösterir.

ve my.cnf bilgileri.

resim açıklamasını buraya girin

Yanıtlar:



3

İzin verilen maksimum paket boyutu bunun olmasının bir nedeni olabilir, ancak muhtemelen bu durumda başka bir şey olmasının birden fazla nedenini görebiliyorum.

  1. Yalnızca önbellek yazma işleminiz değil, aynı zamanda açık önbellek silme işlemleriniz de vardır. Başarısız bir önbellek yazma sadece önbellek yazma tekrar ve daha sonra önbellek isabet ile sonuçlanır, ancak silinmez.
  2. Bu cache_bootstrap tablosudur. Büyük olabilen bazı önbellekler var, ancak genellikle o çöp kutusundan değiller.

Bu kalıbın en yaygın nedeni, her sayfada gerçekleşen variable_set () çağrılarıdır. Bu önbellek silme işlemlerinin nereden geldiğine bir göz atın, xhprof ile, xdebug ve bir kesme noktası belirleyerek veya bir debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS) ekleyerek. Orada bir variable_set () çağrısı göreceksiniz eminim.

Sorun değişkenler için tek bir genel önbellek olmasıdır. Her önbellek yazma işlemi önbellek silinmesine neden olur ve bir sonraki istek tüm {variables}tabloyu okur ve önbelleğe geri yazar.

Birçok geliştirici bunun farkında değildir ve bir .module dosyasında veya her istekte yürütülen başka bir yerde variable_set () yöntemini çağırarak "değerleri sağlamak" gibi şeyler yapıyor.


evet .. bu en geliştirici doğru ben bile tartıştığım değişken_set () gerçeği hakkında bilmiyorum. ve ayrıca debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS) hakkında bilgi ediniyorum. Bunun için teşekkürler. :)
Bay J

3

Bu sadece bir hipotezdir, ancak önyükleme önbelleğiniz her sayfa yükünde yeniden oluşturulursa, modüllerinizin bir kısmı modüller klasöründe eksik ama yine de sistem tablosunda bulunabilir. Her sayfada yük drupal onu bulmaya ve bootstrap_cache'i yeniden oluşturmaya çalışır.

Bootstrap optimizer modülünü deneyin , bu tür kayıtları bulmaya ve silmeye yardımcı olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.