2012-05-25 33 views
6

Kaynakların oldukça sınırlı olduğu yerleşik bir ortamda çalışıyorum. İyi çalışan node.js'yi kullanmaya çalışıyoruz, ancak genellikle 60 megabaytlık sanal bellek tüketiyor (kullanılan gerçek bellek yaklaşık 5 megabayttır.) Kısıtlamalarımız göz önüne alındığında, bu çok fazla sanal bellek; node.js'nin en çok yaklaşık 30 megabayt VM kullanmasına izin verebiliyoruz.Sanal bellek kullanımı node.js ile nasıl sınırlandırılır?

böyle "--max_executable_size" ve "--max_new_space_size" ama deneyden sonra, ben bunların hepsi gerçek hafızayı kontrol ettiğini bulmak, "--max_old_space_size" olarak node.js için çeşitli komut satırı seçenekleri vardır kullanım, maksimum sanal bellek boyutu değil.

Önemliyse, ARM mimarisinde bir ubuntu linux varyantında çalışıyorum.

Bir node.js işleminin kullanmasına izin verilen maksimum sanal bellek miktarını ayarlamasına izin verecek herhangi bir seçenek veya ayar var mı?

+0

Neden bu bir sorun olmalı? Linux, aşırı ayırma kullanır: Bu sanal bellek, yalnızca işlem sayfası tablosunun içinde * geçici olarak * kullanılana kadar var olur. –

+0

Hm. Emin değilim. Bu yerleşik bir ortamdır (yani: disk alanı yok), böylece tüm sanal ayırmalar bazı gerçek bellekleri kullanmazlar mı? Bu düşüncemi patronuma koyacağım, ama hiçbir fark yaratmayacağına dair hislerim var; Ayak izini azaltmam için emredildiğim ve çok fazla ağırlık taşımayacağımı iddia ettim. 'Müşteri her zaman haklıdır' bir şeydir. Ayrıca başka bir konuya girdim; Sanal bellek kullanımını 55 megavattan daha düşük bir değere sınırlamak için setrlimit() işlevini kullanarak bir işlev yazdım ve şimdi node.js bir malloc hatasıyla çıkıyor. Baska öneri? – Mike

+0

Merhaba Mike. Bunu nasıl çözdün? – Industrial

cevap

1

Düğümün sınırlı boyutta yürütülmesi için softlimit'u kullanabilirsiniz. Ya da, Linux'un setrlimit'unu doğrudan kullanabilirsiniz, fakat bunu NodeJS'den nasıl arayacağınızdan emin değilsiniz, bkz. this SO question

+0

Teşekkürler. Setrlimit() 'ı buldum, node.js için bir eklenti yazmak için kullandım ve işe yaradı - ama şimdi node.js' den bir hata mesajı alıyorum çünkü malloc() başarısız oluyor çünkü çok fazla bellek ayırmıyor (55 mega) istediği gibi. Bellek eksikliğiyle ilgili çok alçakgönüllü bir yol gibi görünüyor. Şimdi node.js'yi yeniden inşa edip edemeyeceğimi anlamaya çalışıyorum ve bellek ayak izini azaltmak için bir şeyler bırakıp bırakmayacağımı anlamaya çalışıyorum. Herhangi bir fikir? – Mike