2

据我所知,nodejs 不是单线程的。在后台,一个工作线程池正在循环执行epoll等无法完成的长io任务。但是后台有多少线程?我找不到任何文件来 grep 号码。

如果我想让nodejs配合mysql数据库,应该有几个线程来执行长期查询任务。而且如果nodejs提供的线程很少,有的sql查询会阻塞是非常危险的。所以我应该非常小心 mysql 模型定义和 sql 查询性能,而这确实是某种专门的工作。

4

2 回答 2

1

最近在研究node-mysql,node-mysql是完全基于事件的,使用node的eventloop,完全不用担心性能问题。

和 node-postgres 是一样的。

但是后台有一个线程池。

我研究了 libeio 源代码,发现旧版本的节点中有 4 个线程。

我研究了 libuv 源代码,发现该数字可以通过 process.env.UV_THREADPOOL_SIZE=number_you_need 在最新版本的节点中进行配置。

于 2013-07-02T09:27:11.507 回答
1

你误会了。node.js 是单线程的。

大多数用于 node.js 的优秀 MySQL 驱动程序都是异步的,因此它们在等待查询完成时不会阻塞进程。

于 2013-06-22T15:02:14.420 回答