Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search

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

    Ionic
    0
    4
    1725
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • chinguyenvc
      chinguyenvc last edited by

      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

      D 1 Reply Last reply Reply Quote 0
      • D
        Dung Tran @chinguyenvc last edited by Dung Tran

        @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?

        chinguyenvc 1 Reply Last reply Reply Quote 0
        • chinguyenvc
          chinguyenvc @Dung Tran last edited by

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

          D 1 Reply Last reply Reply Quote 0
          • D
            Dung Tran @chinguyenvc last edited by Dung Tran

            @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?
            1 Reply Last reply Reply Quote 1
            • First post
              Last post