2014-10-07 15 views
5

Java 7'de, normalde sistem kaynağı tüketimi açısından oldukça sağlıklı bir java sunucu uygulaması var. Normalde sunucudaki CPU kullanımı% 50'nin altında. Ancak başlangıçtan sonraki birkaç dakika içinde, bu süre zarfında çok fazla trafik sunmaya çalışırken, CPU'nun birkaç dakika süreyle% 100'e sabitlenebileceği noktaya kadar çok farklı davranır. Sonuç, yavaş yanıt süreleri, ağ zaman aşımları ve hatta bazen uzun çöp toplama duraklamalarıdır.C2 Kompresör başlangıç ​​CPU'yu başlatıyor

Sorunu teşhis etmek için sunucu başlatılırken bir dizi iş parçacığı attım ve aynı anda en yüksek H'yi çalıştırdım. Her bir java parçasını bir pid ile eşleştirerek, en çok CPU kullanarak C2 CompilerThread'u sürekli olarak görebiliyorum. Bu iş parçacığının ne yaptığına dair araştırma yaptım ve bunun, çalışma zamanı istatistiklerine dayanan bir Java derleyicisini en iyi duruma getirdiğini anlıyorum. Ama yaptığım tüm okumalardan, durumu daha iyi hale getirmek için en iyi yaklaşımı anlatamam. (Başlangıçta sonraki ilk birkaç dakika içinde daha iyi performans bu sonuç olacak ama?) TieredCompiler için C2

  1. Anahtarı -XX üzerinde
  2. açın: Ben toplamaktadır seçeneklerdir + PrintCompilation nedir görmek optimize edilen (ancak sunucu şekilde trafiği kabul edilmeden önce ben onu optimize edilmesi zorlayabilir miyim? Bu bilgilerle ne yapacağız?)

götürüp orada denemek ve hafifletmek için başka seçenekler de vardır için en iyi yaklaşım nedir Başlangıçtan sonra CPU kullanımı?

+2

Tüm kod derlemesinin nereye gittiğini bulduktan sonra, azaltma yollarına bakın. Bu, özellikle pahalı olan bir kütüphanenin kaldırılması anlamına gelebilir. IMHO, C2'nin uzun zaman harcayarak harcayacağı çok fazla kodun olması normal değildir. –

+0

Teşekkür ederim. Bunu denedim ama ne aradığımdan emin değilim. Sadece en sık kullanılan yöntemler? Ya da "yapımı zombi" ya da "katılımsız" etiketli yöntemler? Bana hiçbir şey atlamayacak bir şey yok. – Cameron

+0

En çok hangi paketleri paketler derler? E. Bu hangi kavanozdan gelir? –

cevap

0

Önceden derlenmiş bir derleme kullanarak sorununuzu gidermek için birkaç ücretli JVM teknolojisi bulunmaktadır.

Bununla birlikte, standart JVM'lere bağlı kalmak istiyorsanız, bir kandırmacının kullanması, başlangıçtan sonra, JVM'nin gerçek işleminiz başlamadan önce ısınması için birkaç kukla istek göndermenizdir. Bu şekilde, müşterilerinize sunmadan önce JVM ısınma maliyeti için ne zaman ödeme yapmak istediğinize karar verebilirsiniz.

Ayrıca tüm kodu hotspot için -Xcomp komut satırı seçenekleri ile derlemek için JVM zorlayabilir, ancak nadiren derleyerek uygulamanın yukarı başlangıç ​​yavaşlatacak şekilde biz tavsiye etmiyorum kullanılmış kod.

İlgili konular