首页 > 编程知识 正文

nodejs单线程处理高并发(nodejs是单线程还是多线程_nodejs是单线程还是多线程?)

时间:2023-05-04 17:39:18 阅读:122078 作者:3206

慕仰0522570

Node.js是如何工作的? Node.js的主要思想是在使用无阻塞、事件驱动的I/O操作处理分布式设备数据密集型实时APP应用程序时保持轻量级和高效性。 这听起来有点拐弯抹角。 其真正意义在于,Node.js并不是今后主导Web开发世界的银弹级平台。 相反,它是一个满足特殊需求的平台。 你不想用Node.js进行CPU负荷大的操作吧。 事实上,使用它进行繁重的计算与消除大多数节点的优点是一样的。 节点的真正意义是构建高性能、可扩展的网络APP应用程序——,因为它可以处理大规模和高吞吐量的并发连接。 那个机制非常有趣。 在传统的网络服务技术中,每次添加连接(请求)时都会生成一个新线程,该新线程占用系统内存,最终占用所有可用内存。 另一方面,Node.js使用未阻止的异步I/O调用只在一个线程上运行,所有连接都由该线程处理。 通过libuv加分,可以支持数万个同时连接。 简单计算,假设:是普通的网络程序。 新连接将消耗2M的内存。 在具有8gb ram的系统上运行时,如果计算线程之间的上下文切换成本,则并发连接的最大逻辑值为4000个。 这是传统Web服务端技术中的处理。 另一方面,Node.js达到了约1M的并发连接扩展级别。 当然,如果来自所有客户端的请求共享单个线程,这也是创建node.js APP应用程序的潜在缺陷。 首先,大量计算可能会导致节点单线程暂时没有响应,阻止来自所有其他客户端的请求,并在计算完成之前返回正常。 接下来,开发人员应该注意避免Exception阻止核心事件循环。 这是因为这会导致Node.js实例的退出(实际上是程序崩溃)。 注意:像PHP一样,一个页面锁定不会影响站点的行为,但Nodejs在一个线程中处理所有链接,因此计算卡或异常阻止卡可能会影响所有其他链接。 解决方案稍后再讨论。 )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。