Gecelik performans testi yaptığımız bir projem var. Web sitemizin 3 saat boyunca yüzlerce eşzamanlı "kullanıcı" tarafından vurulduğu her gece aynı test. Performans sonuçları iki durumdan birinde - kötü ya da iyi, ve her bir devletin kendi ile tutarlı gibi görünüyor. Veritabanımızdaki adam (oracle btw), kötü performans günlerinde iyi günlerden çok daha fazla arama yapacağımızı, ancak sadece bir sorgunun olduğunu fark etti.Hazırda bekletme performansının nondeterminik bir şekilde dalgalanmalarına neden olur?
Şu ana kadar yaptığım analizden, proxy'leri kullanmak/kullanmamak için hazırda bekletme modunu kullanmak zorunda olduğunu düşünüyorum, ancak bazı günlerde başkalarına yapmamak için hazırda bekletmenin ne olduğunu anlayamıyorum. Hazırda bekletme gibi düzensiz deterministik davranışlara ne sebep olur? Hibernate 4.2.0 ve ilkbahardayım. 2. seviye bir önbellek kullanmıyoruz. Sunucularımızda başka uygulama yok.
Bu çağrının yayılmasına neden olan nesne, ebeveyn/çocukla ilişkili uzun bir nesne zincirinin sonundadır. Bu zincirin başı çalışıyoruz.
Kötü işletilen 9wu ihbarı 4m infaz ... İyi bir çalışma, 9wu ait 630k infaz fark
sorgu ... sorgu
Düzenleme: elimden gelmiyor bunu çoğunlukla bir modülde çoğaltmak için. -xmx çok düşük (28m) olarak ayarlandığında, ekstra aramalar yok, ama xmx = 128m'de en çok çalışıyorum. Hazırda bekletme ile ilgili herhangi bir ipucu, proxy olup olmamasına göre neden/nasıl karar vereceğini görebilir?
Düzenleme 2: Modemimde sürekli olarak çoğalamıyorum. 5 koşu için harika çalışacak, sonra 3 iş için başarısız olacak ve sonra başarısız olacaktır. Her defasında aynı birim testini çalıştırıyorum. Bir N + 1 problemi gibi görünüyor, "select item0 ..." sorgusuyla bir sürü çocuk yükler, ancak iyi bir çalışma sırasında başka bir sorgu kullanmaya karar verir veya webservice arasındaki girdileri atmaz. çağırır. Nesnelerimi gizlemek ve bazı ayrıntılar vermek için neler yapabileceğimi göreceğim. BT ne yazık ki bir veritabanında saklanan bir ağaçtır ve bir ayrımcı ile miras kullanır.
ihtimale için veritabanı alabilirsiniz tahrip "Analizlerimden bugüne kadar, proxy'leri kullanmama/kullanmama için hazırda bekletme seçeneğinin olması gerektiğini düşünüyorum." Ne "Proxy" için başvuruyorsunuz? Varlıklar için vekilden bahsediyorsanız, Hibernate'in deterministik olmayan bir tarzda vekiller oluşturduğunu hiç duymadım. Daha fazla detaylandırır mısın? –
bana öyle geliyor ki: 1. Nesnenin uzun zincirliğini tüm tembel getirdi. 2.Bazı durumlarda, zincirin küçük bir kısmını (ki bu iyi durumda) seyrederken, bazı durumlarda zincirin çoğunda geziniyorsunuz, bu da büyük miktarda tembel getiriye (kötü durum) neden oluyor. 3. ya da, bazı özel durumlarda bazı "yeniden kullanılamaz n + 1" getirme yapıyorsunuz. Uygun bir şekilde Hazırda bekletme olanağına sahip olmanızı öneririm ve büyük miktarda SQL'in oluşturulduğu (bu durumun açık olması gerektiğini) –
sorgusuyla ilgili sorguları gönderebilir misiniz? Haritalama konusunda hevesli bir şekilde harekete geçmenizi ve "bu tür düzensiz deterministik olmayan davranışlar" ın hala var olup olmadığını görmenizi öneririm. –