nodejs中有多less个工作线程?是否可以修改数字以获得更好的性能?

据我所知,nodejs不是单线程的。 在后台,一个工作者线程池正在循环执行不能由epoll等完成的长期io任务。但是在后台有多less线程? 我找不到任何文件来grep数字。

如果我想要nodejs与mysql数据库合作,应该有多个线程来执行长期的查询任务。 如果只有一些nodejs提供的线程,一些sql查询就会阻塞,这是非常危险的。 所以我应该非常小心mysql模型定义和sql查询性能,而这真的是一种专门的工作。

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

node.js的大部分优秀的MySQL驱动程序都是asynchronous的,所以它们在等待查询完成时不会阻塞进程。

我最近研究了node-mysql,而node-mysql完全是基于事件的,使用节点的eventloop。根本不需要担心性能。

和node-postgres是一样的。

但是在后台有一个线程池。

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

我研究了libuv源码,发现这个数字可以通过process.env.UV_THREADPOOL_SIZE = number_you_need在最近版本的节点中configuration。