如何使用请求js(节点js模块)池

如何使用请求js(节点js模块)池,第1张

如何使用请求js(节点js模块)池

请求中的池选项使用的代理

http.Agent
与标准HTTP库中的代理相同。请参阅文档http.Agent,看到了
agent
期权http.request。

用法

pool = new http.Agent(); //Your pool/agenthttp.request({hostname:'localhost', port:80, path:'/', agent:pool});request({url:"http://www.google.com", pool:pool });

如果您想知道是什么,可以从控制台查看。

{ domain: null,  _events: { free: [Function] },  _maxListeners: 10,  options: {},  requests: {},  sockets: {},  maxSockets: 5,  createConnection: [Function] }

maxSockets
决定有多少并发套接字代理可以为每个主机开放的,存在于默认值为5.通常,您将之前设置的代理。
pool.maxSockets
显式传递将覆盖中的maxSockets属性
pool
。仅当通过
pool
选项时,此选项才有意义。

如此不同的使用方式:

  1. 不提供
    agent
    选项,
    undefined
    将使用
    http.globalAgent
    。默认情况。
  2. 将其设置为false,将禁用池化。
  3. 提供您自己的代理,例如上面的示例。

反向回答您的问题。

池旨在保留程序要使用的一定数量的套接字。首先,套接字被重用于不同的请求。因此,它减少了创建新套接字的开销。其次,它使用较少的套接字来进行请求,但始终如一。它不会占用所有可用的插槽。第三,它维护请求队列。因此,存在等待时间。

池就像缓存和节流阀。如果您有更多的请求和更少的套接字,则油门效果将更加明显。使用全局池时,它可能会限制两个不同客户端的功能,因此无法保证等待时间。为他们拥有单独的资源池对两者都比较公平(请考虑一下,如果一个请求比另一个请求更多)。

maxSockets属性可提供最大的并发性。它提高了整体吞吐量/性能。缺点是油门效果降低。您无法控制峰值开销。将其设置为大数,就像根本没有池。您将开始遇到诸如套接字不可用之类的错误。它不能超过 *** 作系统设置的允许的最大限制。

那么,什么是高吞吐量/性能的最佳选择?吞吐量存在物理限制。如果达到限制,响应时间将随着连接数而增加。在此之前,您可以一直增加maxSockets,但是增加之后将无济于事。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5564799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存