【问题标题】:How to throttle http connection如何限制http连接
【发布时间】:2021-08-19 05:23:24
【问题描述】:

我正在寻找一种在我的 http REST 连接中引起延迟的方法。我需要找到解决服务器端问题的解决方案,该问题在 bd 连接池饱和时终止连接(无法创建更多 bd 连接对象)。我自己进行了测试,但无法重现该问题。该问题发生在生产环境中。我怀疑这是因为数据来晚了,服务器必须等待并保持 bd 连接才能完成任务。

我测试的方式是使用 Java 单元测试,它将 json 数据 1000 发送到服务器。我没能破坏后端。

我的下一个方法是做同样的事情,通过 http 添加一些延迟来模拟互联网连接并不总是稳定的真实事件。

【问题讨论】:

    标签: java spring-boot networking qos


    【解决方案1】:

    如果您想在服务器端引起延迟,您可以在响应 HTTP 请求之前让线程休眠一段时间。例如:

    // NOT FOR PRODUCTION
    @RequestMapping("/endpoint")
    @ResponseBody
    public String endpoint() {
        try {
            Thread.sleep(1000); // sleep this thread for 1 second
            return "Responded after 1 second";
        } catch (InterruptedException e) { // sleep was interrupted
            return "Responded before 1 second";
        }
    }
    

    如果您想在客户端上引起延迟,您可能需要一些自定义处理以在从客户端的套接字读取之前使线程休眠。

    另一种选择是在较低的网络层而不是应用层引入真正的延迟。您可能会发现一些第三方工具对这种方法很有帮助。

    【讨论】:

    • 我正在寻找一些真正会占用带宽的软件,因为 1 秒睡眠并不是很接近带宽可用 25% 或 50% 的情况。在睡眠期间,与仍然可以传输数据的低带宽可用性相比,什么都没有发生。
    猜你喜欢
    • 1970-01-01
    • 2020-10-17
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多