【问题标题】:How does Node.js handle connections?Node.js 如何处理连接?
【发布时间】:2012-12-12 09:45:21
【问题描述】:

我想知道 Node 如何处理连接。我的意思是:当我跑步时……

node myserver.js

...我提出一个请求,Node 是做什么的?

我做了一个测试。我有一个运行 socket.io 的服务器。我在浏览器中打开了两个选项卡,用于建立 WebSockets 连接。我检查了线程(ps -eLf),我总是运行相同的 6 个线程:

node     12837 12518 12837  1    6 22:29 pts/0    00:01:10 node /usr/local/lib/node_modules/node-dev/wrapper.js prueba1.js
node     12837 12518 12838  0    6 22:29 pts/0    00:00:00 node /usr/local/lib/node_modules/node-dev/wrapper.js prueba1.js
node     12837 12518 12839  0    6 22:29 pts/0    00:00:14 node /usr/local/lib/node_modules/node-dev/wrapper.js prueba1.js
node     12837 12518 12840  0    6 22:29 pts/0    00:00:14 node /usr/local/lib/node_modules/node-dev/wrapper.js prueba1.js
node     12837 12518 12841  0    6 22:29 pts/0    00:00:14 node /usr/local/lib/node_modules/node-dev/wrapper.js prueba1.js
node     12837 12518 12842  0    6 22:29 pts/0    00:00:14 node /usr/local/lib/node_modules/node-dev/wrapper.js prueba1.js

我问这个是因为我想了解阻塞代码实际上阻塞了什么

【问题讨论】:

  • 你在说什么“阻塞代码”?
  • “非阻塞”和“多线程”不是同一个意思。
  • 你是在问cluster 是如何提供连接的吗?
  • 阻塞代码是指同步函数。而我真正想知道的是:阻塞代码会阻塞所有连接的服务器吗?

标签: node.js http asynchronous socket.io serverside-javascript


【解决方案1】:

如果您需要了解节点中的异步 IO 如何在低级别工作,我建议阅读以下文档:

【讨论】:

  • 谢谢。我在the Node's about page 中找到了更多信息。我还没有成为一名计算工程师,但我想我有一个答案:此外,Node 用户无需担心进程死锁——没有锁。 Node 中几乎没有函数直接执行 I/O,因此进程从不阻塞。 所以,我的结论是:我不必担心连接之间的阻塞,我必须使用 cluster 模块高可扩展性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 2020-02-07
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多