首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迫使嵌入式码头立即断开连接

迫使嵌入式码头立即断开连接
EN

Stack Overflow用户
提问于 2015-04-24 09:59:42
回答 1查看 854关注 0票数 0

我正在创建一个小实用程序,它接收大量HTTP请求。它是用java编写的,并使用embedded-jetty通过https处理请求。

我为它提供了一个负载测试工具,但是当它运行了一段时间之后,它开始抛出异常:

代码语言:javascript
复制
java.net.BindException: Address already in use: connect

(请注意,这是发件人一方,而不是我的项目)

据我所知,这意味着当另一个connect被调用时,系统中没有发现更多的空闲套接字。吞吐量是关于每秒1000请求,并且故障开始出现在2000050000请求之后的某个地方。

然而,当我在另一个程序中使用相同的负载测试工具(一种简单的使用者,由一些同事用scala使用netty编写--它只是接收所有请求并返回空的ok响应)--套接字没有这样的问题(尽管典型的速度比1.5-2慢一倍)。

我想知道是否可以通过告诉Jetty在发送回复后立即关闭连接来解决这个问题。无论如何,每个新请求都是通过新连接发送的。我试着玩Connector#setIdleTimeout --在默认情况下它似乎是30000,但没有成功。

我能做些什么来解决这个问题--或者至少更深入地研究这个问题,找出其原因(如果我的建议是错的)?

UPD感谢您的建议,我认为我不允许发布源代码,但我想我应该研究客户机的代码(这将使我忙碌一段时间,因为它是用scala编写的)。

EN

回答 1

Stack Overflow用户

发布于 2015-04-30 12:11:26

我发现客户端确实有一个问题--它在头中用Connection: Keep-Alive发送请求,但是为每个请求创建新的HttpURLConnection,然后调用disconnect()方法。

为了解决服务器端的这一问题,在响应头中发送Connection: close就足够了,因为我不允许更改测试实用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29844509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档