2015-04-28 40 views
22

Uygulamamı 0.10.x düğümden 0.12.x ailesine yükseltmeye çalışıyorum, hoş olmayan bir sürprizle karşılaştım: 0.12, 0,10'dan% 15 -% 20 daha fazla RAM kullanıyor.node.js 0.12.x bellek kullanımı

io.js sorunları sayfasında, bir fewthreads ile ilgili olarak, bu hata, temel v8 motoruyla ilgili gibi görünüyor.

Artık yazılım güncellemesi, yönetime olduğu gibi satmak zor bir teklif. Daha az VPS donanımı için birkaç adet görünür avantajla ödeme yapma ihtiyacını ekledik ve bu bizim için bir anlaşma kırıcı oldu.

& whistles v8 yeni çantayı ekleyen yeni çantayı devre dışı bırakmanın bir yolu var mı? Belki de işe yarayan CPU profilleme maddeleri?

Temel olarak, bellek kullanımını 0.10 düğümüyle gönderilen v8 ile karşılaştırılabilecek düzeye indirebilen bir v8 anahtarı arıyorum.

+0

io.js uygulamanızda 0,10 değerine nasıl karşılık gelir? –

+0

Sadece denemeye çalıştım, ancak bir sürü çözülmemiş npm sorunuyla karşılaştım (düğüm-uyumsuzluk). Bu noktada pes ettim, bu tek test sistemi üzerinde çalışsam bile, üretimde güvenebileceğim bir şey gibi görünmüyor. – panta82

+1

Lütfen io.js'de karşılaştığınız hatalara ilişkin sorunları açmayı düşünün, 0.10'dan fazla performans elde ettiğiniz performansın, daha hızlı olan asenkron işlemlerin yerine jeneratörler kullanarak kazanabileceğinizi düşünüyorum. Ayrıca - gerçekten performans mı yoksa sadece hafıza kullanımı mı kaybettin? (Aynı miktarda mevcut sistem ramı da verildiği gibi -% 15 daha az talep var mı?) –

cevap

8

Node.js işleminizin kullandığı bellek miktarını --max-old-space-size işaretiyle sınırlandırabilirsiniz. Belki de belleği kabul edilebilir bir şeye yükleyebilir ve ardından kabul edilebilir bir performans gösterip göstermediğini görmek için uygulamanızı kıyaslayabilirsiniz.

node --max-old-space-size=512 myScript.js 

Ayrıca, keşfetmeye değer olabilecek çöp koleksiyonlarını kontrol eden bayraklar da var. Ve da zaman okumaya değer olabilir.

+0

'--max-old-space-size' anahtarı, 512mb'nin üzerinde bir düğüm işleminin maksimum belleğini artırmak için kullanılır. Bu değerin altında bir şey yapmazsa bir şey yapmıyor gibi görünüyor, ve eğer olsa bile, nasıl yardımcı olacağını görmüyorum (bir kaza nedeni hariç).Performans profili oluşturma konularını biliyorum, sorun aynı kodun farklı çalışma sürelerinde farklı miktarda RAM kullanmasıdır. Yani, V8'in kendisinde, ekleyebileceğim kodu değil, ekleyebileceğim bir şey var. – panta82

0

Eğer v.10 geri dönüşü sizin için bir seçenekse, Node Version Manager NVM'u kullanarak bunu çok kolay bir şekilde yapabilirsiniz. Sadece v.12 için bir düzeltme beklerken, halindeyken sevdiğiniz herhangi bir sürüme geçin ve kullanın.

+0

Ben de öyle yaptım. Yine de aradığım gerçek çözüm değil. – panta82