Hiện tượng NodeJS Server bị quá tải chiến nhiều bộ nhớ



  • Chào mọi người.

    Hiện tại mình đang lập trình Ionic có cài Node vào để chạy. Thì xảy ra hiện tượng như thế này

    Ban đầy khi mình mới bật Server ( ionic server ) để ý trong tagmanager => Nodejs Server chiếm khoảng 230.000K ( khoảng 200M), lúc này chương trình chạy rất mượt.

    Nhưng sau một thời gian NodeJs Server chiếm dung lượng rất lớn lên đến khoảng 1.4880.000 K và nhiều hơn thế => Dẫn đến tình trạng khi mình load lại trang hay khi hệ thống tự động cập nhật code mới thì thời gian chờ tải server mà rất lớn, trình duyệt loading rất lâu 1-2 phút, nhiều khi không không phản hồi lại được.

    P/S: Mình đang lập trình Ionic



  • @chinguyenvc said in Hiện tượng NodeJS Server bị quá tải chiến nhiều bộ nhớ:

    Bạn thử kiểm tra lại xem có tạo variable trong NodeJS để lưu trữ thông tin gì đó mà quên chưa giải phóng không?



  • @Dung-Tran Mình có sử dụng sessionStorage để lưu lại giá trị.



  • @chinguyenvc
    Thực ra việc NodeJS chiếm dung lượng memory lớn có nhiều nguyên nhân trong đó có 1 số nguyên nhân thường gặp:

    1. Event Queue bị đầy do có quá nhiều event được đẩy vào event queue mà call stack đang bận xử lý 1 tác vụ gì đó (CPU intensive task) cho nên các event trong event queue ko thể giải phóng được khiến cho bộ nhớ heap bị tăng cao => Node JS sẽ chiếm dung lượng của RAM.

    2. Các Variables hoặc cache hoặc các module của NodeJS lưu trữ dữ liệu trên RAM mà ko được được giải phóng.

    Vậy giờ việc bạn cần kiểm tra là:

    1. sessionStorage bạn dùng là ở client side hay server side? Nếu là ở client Side thì nó ko phải là nguyên nhân, nếu là server side thì cần kiểm tra nó có dùng memory để lưu trữ dữ liệu ko? Nếu phải thì khả năng cao chính là nó.

    Bạn có thể dùng dòng lệnh này:

    var util = require('util'); 
    console.log(util.inspect(process.memoryUsage()));
    

    để kiểm tra bộ nhớ HEAP của NodeJS và làm 1 vài kiểm tra trên sessionStorage (như là clear nó đi chăng hạn) để xem thử memory có giảm ko là sẽ biết được nó có phải thủ phạm hay ko.

    1. Kiểm tra code xem thử có các vòng lặp hoặc đệ quy nào đó lạm dụng event queue ko?

Log in to reply