Nâng CaoNode.js iconNode.js

Libuv là gì? Vai trò trong Node.js?

Libuv là C library đa nền tảng cung cấp event loop, async I/O và thread pool cho Node.js.

Hai loại operations:

  1. OS-native async (không dùng thread pool): network I/O (TCP/UDP) — dùng epoll (Linux), kqueue (macOS), IOCP (Windows), cực efficient;
  2. Thread pool operations (dùng 4 threads mặc định vì OS không hỗ trợ async đầy đủ): file system I/O (fs.readFile), DNS lookup (dns.lookup — không phải dns.resolve), crypto operations (pbkdf2, scrypt, randomBytes)

Thread pool size: tăng bằng env var UV_THREADPOOL_SIZE=16 (max 1024) — quan trọng khi app làm nhiều file I/O hoặc crypto đồng thời, 4 threads mặc định tạo bottleneck.

Ví dụ vấn đề: app gọi 10 dns.lookup() đồng thời, 4 threads xử lý 4 cái, 6 cái còn lại queue — tăng UV_THREADPOOL_SIZE hoặc dùng dns.resolve() (network I/O, không dùng thread pool).

Libuv abstract sự khác biệt giữa OS — cùng Node.js code chạy trên Linux epoll và Windows IOCP mà không cần sửa.

Xem toàn bộ Node.js cùng filter theo level & chủ đề con.

Mở danh sách Node.js