社区
网络通信/分布式开发
帖子详情
关于 TidTcpServer cpu占用率过高的问题
searoom
2011-03-14 11:51:56
我只是简单的在 onconnect 中取得连接,然后在 onexecute 中响应客户端的简单请求。
已经确认客户端并没有发送命令了,只是 connect 没有断开还保持了而已,
此事 服务端程序的 cpu 占用率会很大,一直维持在 90% 以上。
不太理解这是为什么。
...全文
390
7
打赏
收藏
关于 TidTcpServer cpu占用率过高的问题
我只是简单的在 onconnect 中取得连接,然后在 onexecute 中响应客户端的简单请求。 已经确认客户端并没有发送命令了,只是 connect 没有断开还保持了而已, 此事 服务端程序的 cpu 占用率会很大,一直维持在 90% 以上。 不太理解这是为什么。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
searoom
2011-03-14
打赏
举报
回复
再次感谢,给分了
goodhj
2011-03-14
打赏
举报
回复
都是自动的,放一个上去,IdTCPServer的 ThreadMgr属性里选上就好了,不需要代码
IdThreadMgrPool是管理线程池,连接比较多的话,频繁的连接的话用这个比较好。
原理嘛就看看帮助
searoom
2011-03-14
打赏
举报
回复
谢谢 goodhj ,加入 IdThreadMgrDefault 后确实减少了很多,然后我又在 Execute() 事件里面第一行写了 sleep(100),cpu 占用率就降下来了。
goodhj 能否讲讲 IdThreadMgrDefault 以及 IdThreadMgrPool 的用法及原理吗?
goodhj
2011-03-14
打赏
举报
回复
if AThread.Terminated then
exit;
if not AThread.Connection.Connected then
exit;
//if not AThread.Connection.IOHandler.Readable() then这个判断不要了
// exit;
searoom
2011-03-14
打赏
举报
回复
我在 Execute 中有这两个判断,早成我以为 Execute 并没有执行
if not AThread.Connection.Connected then
exit;
if not AThread.Connection.IOHandler.Readable() then
exit;
后来加入测试代码在这两个语句上面,才发现 Execute 会不停的执行。
to: alanhao
我是想保持当前在线的名单,所以,不想直接断开客户端连接。
alanhao
2011-03-14
打赏
举报
回复
监听也是需要消耗cpu的
建议随时断开不活跃的线程。
goodhj
2011-03-14
打赏
举报
回复
有IdThreadMgrDefault线程管理控件吗?
connect 没有断开就表示线程还在,比如你有100个TCP连接就会开100个线程,虽然没有发指令,但那100个线程仍然还是在运行的。只不过onexecute不执行
求帮助,解决TCP服务端
CPU
占用
过高
问题
求帮助,解决TCP服务端
CPU
占用
过高
问题
自己写了一个TCP的server端,用来接收zip包,解压并存到mongo中,运行时发现
CPU
占用率
一直居高不下,随着运行时间变多,每个端口下有174线程在运行,在代码内部添加close也不能解决,又没有大神清除,请问是什么原因,有什么解决办法??万分感谢 #!/usr/bin/python27 # coding:utf-8 import socket...
关于id
tcpserver
的使用
用id
TCPServer
,客户端接上来时,如何取得客户端的IP? IP:=AThread.Connection.Binding.PeerIP;Port:=AThread.Connection.Binding.PeerPort; 尝试解答你的疑问:
问题
一:在Form1中放入ID
TCPServer
控件,一旦有socket连接,ID
TCPServer
自动建立一个线程与之建立一个TCP/IP...
Delphi中关于id
tcpserver
的使用解答(转)
Delphi中关于id
tcpserver
的使用解答(转) 用id
TCPServer
客户端接上来时,如何取得客户端的IP? IP:=AThread.Connection.Binding.PeerIP; Port:=AThread.Connection.Binding.PeerPort; 尝试解答你的疑问:
问题
一: 在Form1中放入ID
TCPServer
控件,一旦有s
Delphi语言的网络管理
Delphi是一种基于Object Pascal编程语言的集成开发环境,也常被称为RAD(Rapid Application Development)工具。Delphi因其友好的视觉设计界面、强大的库支持以及良好的性能,广泛应用于桌面应用、数据库管理及网络应用等多个领域。对于网络管理而言,Delphi语言能够帮助开发者快速开发出适合不同需求的网络管理工具。Delphi语言在网络管理中的应用,因其快速开发能力和丰富的组件支持,使得开发者能够轻松实现各类网络管理功能。
Indy 10.1.5.0 网络组件库帮助文档
在当今软件开发领域中,Indy库作为一个稳定、高效的网络通信框架,已成为构建各种网络应用程序的基石。Indy库采用了面向对象的设计理念,核心架构注重于实现多种网络协议的简化接口和灵活使用,使得开发者能够轻松地处理网络通信的各种需求。Indy库的设计考虑了跨平台的兼容性,允许应用程序在不同的操作系统上无缝运行,同时提供了模块化的组件,以方便根据项目需要进行选择性引入和优化。
网络通信/分布式开发
1,594
社区成员
32,958
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章