gpt4 book ai didi

node.js - 如何处理 Node.js 中缓慢的客户端连接?

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:55 25 4
gpt4 key购买 nike

Node.js 是单线程的。如果一个缓慢的客户端正在发出请求,我想它可能会阻塞线程直到它完成。这有意义吗?

如何处理慢速连接?如果连接时间太长,终止连接是否有意义?如何确定这一点?如何测量请求花费的时间,并在请求花费的时间太长时终止请求?我不是指发回响应所需的时间。我只是指 Node 接收处理请求所需的所有数据所需的时间。这是一个合法的场景吗?

我想一定有某种方法可以做到这一点,否则很容易对 Node.js 服务器进行 DOS 攻击......

编辑:在发布请求中,数据以 block 的形式传入。那么如果它来得慢又如何呢?我不知道如何模拟这个。但如果这是 Node 中的问题,那么它同样可能是 PHP 等中的问题,因为您只需要生成许多连接,所有这些连接攻击服务器都非常慢。

最佳答案

客户端请求数据传入缓慢也没关系。 Node 中的 I/O 是异步且非阻塞的。因此,如果套接字上的数据 block 长时间不可用, Node 可以同时执行其他操作,例如从其他套接字接收数据 block 。

您可以设置一个不活动超时,当在所需的时间长度内在套接字上看不到数据时触发该超时。对于 HTTP,您可以通过 server.setTimeout() 设置全局请求超时可以自动关闭底层套接字,或者如果您传入回调,您可以根据需要处理超时。对于 TCP,有 socket.setTimeout() .

关于node.js - 如何处理 Node.js 中缓慢的客户端连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com