რესურსები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-ს გაუშვებდა.
მაგრამ ჯერ შეამოწმე, გჭირდება თუ არა
აპი, რომელიც იზრდება მანამ, სანამ ნებისმიერ ჭერს არ დაეჯახება, გაჟონვა აქვს, და ჭერის აწევა საათებს ყიდულობს და არ ასწორებს. თუ მეხსიერება მუდმივი დატვირთვისას სტაბილურად იზრდება, შესაცვლელი რიცხვი შენს კოდშია და არა გაშვების ბრძანებაში.