我使用Node js来创建REST API。
在我的场景中,我有两个API。
API 1 -->必须获取10,000条记录并进行迭代以修改某些数据
API 2:简单的get方法。
当我打开post man并点击第一个API和第二个API时,因为Node JS是单线程的,这导致第二个API获得响应的速度较慢。
我的期望是:即使第一个API获得了时间,它也不应该在很长时间内成为第二个API。
从Node JS文档中,我发现了集群的概念。https://nodejs.org/dist/latest-v6.x/docs/api/cluster.html,所以我实现了集群,它创建了4个服务器实例。现在我在一个选项卡中点击API 1,在第二个选项卡中点击API 2,它工作得很好。但是当我在4个选项卡中打开API1,并再次打开第5个选项卡时,API2再次导致速度变慢。
解决这个问题的最佳解决方案是什么?
发布于 2016-12-12 01:26:44
由于node.js的单线程特性,确保您的服务器始终响应您为API2描述的快速请求的唯一方法是确保您的服务器中永远不会有任何长时间运行的操作。
当您在代码中遇到需要一段时间才能运行并会影响服务器响应性的操作时,您的选择如下所示:
启动一个新的进程,并在另一个进程中运行
最后一个选项是最简单的,因为它对任何数量的长时间运行的请求都是有效的,尽管所有的方案都可以帮助您。
发布于 2016-12-12 01:26:37
Node.js实际上不是多线程的,所以所有这些请求都是在单个线程的事件循环中处理的。
每个Node.js进程在单个线程中运行,默认情况下,它在32位系统上的内存限制为512MB,在64位系统上的内存限制为1 1GB。
但是,您可以将单个进程拆分为多个进程或工作进程。这可以通过集群模块来实现。集群模块允许您创建子进程(工作进程),子进程与主节点进程共享(或不共享)所有服务器端口。
您可以在应用程序中直接调用集群API,也可以在API上使用多个抽象之一
https://stackoverflow.com/questions/41088653
复制相似问题