首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TIdHTTPServer缓慢使用所有连接

TIdHTTPServer缓慢使用所有连接
EN

Stack Overflow用户
提问于 2020-10-08 03:38:12
回答 1查看 108关注 0票数 0

Delphi 10.3.1,Indy 10.6.2.5366

我们在REST服务中使用TIdHTTPServer,而TIdHttpServer使用所有连接的速度很慢。MaxConnections是100。当我们达到100个连接时,没有人能从服务中获得任何响应。

使用netstat,我们可以看到IP和对等端口,在OnCommandGet/OnCommandOther中,我们记录了IP和对等端口,但没有一个IP/端口与netstat中的IP/端口匹配,状态为ESTABLISHED。

但是,当我们开始在OnConnect中记录IP和对等端口时,我们可以从netstat中看到IP/端口。

所以现在我们认为我们的一些连接在OnConnectOnCommandGet/OnCommandOther之间卡住了。

并非我们所有的客户都会遇到这个问题,但对于某些客户来说,只需要2-10天就能联系到MaxConnections

服务的客户端是移动设备,所以我们认为这可能与建立连接时的internet连接质量有关?!

我们能做些什么来防止这种情况发生吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 07:03:11

客户端连接时会立即触发OnConnect事件,但直到收到完整的HTTP请求时才会触发OnCommand...事件。但是您应该能够在OnCommand...事件中获得可行的PeerIP/PeerPort值。

如果您的移动设备的连接稳定性有问题,它们可能会异常地断开连接,服务器的操作系统可能无法及时对此做出反应。这肯定会导致服务器端出现一堆死连接,至少在一段时间内是这样。

OnConnect事件中,尝试为AContext.Connection.ReadTimeout属性或AContext.Binding.SetKeepAliveValues()方法分配一个合理的非无限超时,看看这是否有助于解决您的问题。

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

https://stackoverflow.com/questions/64251162

复制
相关文章

相似问题

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