RE:NODE
ჰოსტინგი

რესურსები5 წუთის საკითხავი

რატომ კვდება შენი Node აპი 2 GB-ზე 4 GB-იან გეგმაზე

კონტეინერის ლიმიტი და V8-ის heap-ის ლიმიტი ორი სხვადასხვა ჭერია. შენი პროცესი უფრო დაბალს ეჯახება ჯერ.


Node პროცესი 4 GB-იან გეგმაზე, რომელიც კვდება მაშინ, როცა პანელის გრაფიკი 2 GB თავისუფალს აჩვენებს, ჰოსტინგის ბაგი არაა. Node-ს თავისი heap-ის ჭერი აქვს, დაყენებული იმისგან დამოუკიდებლად, რამდენი მეხსიერება აქვს კონტეინერს, და ნაგულისხმევად ის გეგმაზე საგრძნობლად დაბალია.

ორი ჭერი

კონტეინერის ლიმიტი ის არის, რასაც სერვერს ვაძლევთ. V8-ის heap-ის ლიმიტი ის არის, რამდენს აძლევს Node საკუთარ JavaScript ობიექტებს, სანამ დანებდება და შეცდომას გამოიტანს. Node-ის ძველი ვერსიები heap-ს ნაგულისხმევად 1.5-2 GB-ზე აყენებენ მანქანის მიუხედავად; ახლები კონტეინერს კითხულობენ, მაგრამ ყოველთვის სწორად არა.

მისი აწევა

node --max-old-space-size=3072 server.js

დააყენე რამდენიმე ასეული მეგაბაიტით გეგმაზე დაბლა და არასდროს ზუსტად მასზე. Heap მთელი პროცესი არაა — ბუფერები, ნატიური მოდულები და თავად runtime მის გარეთ ცხოვრობს, და heap, რომელიც ზუსტად კონტეინერის ზომაზეა, ნიშნავს, რომ ბირთვი პროცესს გააჩერებს მანამ, სანამ V8 garbage collection-ს გაუშვებდა.

მაგრამ ჯერ შეამოწმე, გჭირდება თუ არა

აპი, რომელიც იზრდება მანამ, სანამ ნებისმიერ ჭერს არ დაეჯახება, გაჟონვა აქვს, და ჭერის აწევა საათებს ყიდულობს და არ ასწორებს. თუ მეხსიერება მუდმივი დატვირთვისას სტაბილურად იზრდება, შესაცვლელი რიცხვი შენს კოდშია და არა გაშვების ბრძანებაში.