Bỏ qua để đến nội dung
Knowledge Hub

Node.js runtime Cơ bản

Nhiều vấn đề hiệu năng của service Node.js không nằm ở database hay mạng, mà ở một đoạn JavaScript đang giữ main thread, hoặc ở dữ liệu vào nhanh hơn nơi ghi. Nhóm này gom ba kiến thức nền của runtime.

Phạm vi của nhóm này: chỉ nói về runtime Node.js. Chưa có bài về TypeScript (type system, cấu hình tsconfig, build); khi có, chúng sẽ được thêm vào đây.

Thứ tự Bài Mức Trả lời câu hỏi
1 Event loop Node.js Trung cấp Callback chạy theo thứ tự nào, vì sao timer trễ, việc gì chặn main thread?
2 Streams và backpressure Trung cấp Dữ liệu vào nhanh hơn nơi ghi thì chuyện gì xảy ra với memory?
3 AsyncLocalStorage Trung cấp Giữ requestId hay tenant cho từng request thế nào khi nhiều request xen kẽ?
Triệu chứng Bắt đầu từ
Mọi route chậm cùng lúc, kể cả route trả pong Event loop (main thread bị chiếm)
setTimeout(fn, 0) chạy muộn hoặc thứ tự setImmediate khó đoán Event loop
RSS tăng theo số upload hoặc client chậm Streams và backpressure
Log của request này mang requestId của request khác AsyncLocalStorage

Nếu dùng NestJS, request lifecycle và provider scopes giả định sẵn mô hình trên: một handler chiếm CPU làm chậm mọi request của cùng process, bất kể pipeline cấu hình thế nào.