据我所知,nodejs不是单线程的。在后台,工作线程池正在循环执行epoll等无法完成的长io任务。但是后台有多少线程呢?我找不到任何文件来grep号码。
如果我想让nodejs和mysql数据库协同工作,应该有几个线程来执行长期的查询任务。如果nodejs只提供了几个线程,那么如果一些sql查询阻塞,这是非常危险的。因此,我应该非常小心mysql模型定义和sql查询性能,虽然这确实是一种专门的工作。
发布于 2013-07-02 17:27:12
我最近研究了node-mysql,并且node-mysql使用node的event完全是基于事件的,根本不用担心性能问题。
和node-postgres是一样的。
但是在后台有一个线程池。
我研究了libeio源代码,发现在旧版本的节点中有4个线程。
我研究了libuv源代码,发现在最近版本的节点中,这个数字是可以通过process.env.UV_THREADPOOL_SIZE=number_you_need配置的。
发布于 2013-06-22 23:02:14
你弄错了。node.js是单线程的。
大多数用于node.js的优秀MySQL驱动程序都是异步的,因此它们在等待查询完成时不会阻塞进程。
https://stackoverflow.com/questions/17251834
复制相似问题