Ответ
Node.js использует однопоточную модель с циклом событий (event loop), но обрабатывает асинхронные операции эффективно через механизмы вроде libuv. При 10 подключениях:
- Каждое соединение регистрируется в event loop как событие
- I/O операции (запросы к БД, файлам и т.д.) выполняются асинхронно в worker threads
- Пока один запрос ждет ответа (например, от БД), event loop обрабатывает другие
Пример простого сервера:
const http = require('http');
http.createServer((req, res) => {
// Асинхронная операция
setTimeout(() => {
res.end('Response');
}, 100);
}).listen(3000);10 клиентов смогут подключиться одновременно - Node.js будет обрабатывать их параллельно благодаря неблокирующей природе. Пропускная способность зависит от:
- Нагрузки CPU (синхронные операции блокируют event loop)
- Количества параллельных I/O операций
- Конфигурации сервера