如何限制http连接

问题描述

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

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

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

解决方法

如果你想在服务器端引入延迟,你可以在响应 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";
    }
}

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

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