Khóa học thực chiến

[hỏi]quản lý inotify và xóa inotify khi chạy trên ubuntu



  • chào mọi người, em đang có 1 vấn đề cần các anh chị tư vấn:

    em đang làm tính watch file trong thư mục chạy trên ubuntu,và đang dùng thư viện chokidar.

    ví dụ em có 1 đương dẫn /data/a/b/

    mục đích của em là watch file dc add vào thư mục b.

    em đang nhận thấy là nó sẽ sinh ra 3 inotify cho thư mục cha và 2 thư mục con.

    việc sinh ra nhiều inotify không cần thiết xảy ra hiện tượng dư thừa, và khi khi thư mục data của em ngày càng lớn tình trạng inotify tăng cao, thậm chí em set lại fs.inotify.max_user_watches = 500k cũng đã k đủ rồi.

    vậy có cách nào quản lý và xóa các inotify không cần thiết bằng nodejs ko ạ, em cảm ơn


  • Global Moderator

    @Thương-Phạm-Hoài said in [hỏi]quản lý inotify và xóa inotify khi chạy trên ubuntu:

    vậy có cách nào quản lý và xóa các inotify không cần thiết bằng nodejs ko ạ, em cảm ơn

    Theo mình bạn cần tạo ra một cái queue, quản lý theo tên thư mục hoặc file có event changed. Sau khi events được sinh ra thì nó chạy vào hàm tạo notify, output của hàm tạo này gồm key + value. Key - là tên file/folder, bạn định danh cho nó (có thể kết hợp WeakMap để lựa chọn, để quyết định lấy key là /data, hay /data/a, hoặc /data/a/b, mình ví dụ là bạn chọn /data/a/b) kết hợp với rxjs, delay 100ms thì push toàn bộ key/value trong WeakMap vào NotificationQueue. Sau đó bạn có thể clear toàn bộ WeakMap và khởi tạo lại.

    Như vậy trong 100ms trên là bạn chỉ tạo ra 1 thông báo, hoặc thời gian này bạn có thể set nó cao hơn.

    Trên là gợi ý của mình, bạn mở rộng và sửa đổi cho phù hợp nhé


Log in to reply