社区
网络通信/分布式开发
帖子详情
关于 TidTcpServer cpu占用率过高的问题
searoom
2011-03-14 11:51:56
我只是简单的在 onconnect 中取得连接,然后在 onexecute 中响应客户端的简单请求。
已经确认客户端并没有发送命令了,只是 connect 没有断开还保持了而已,
此事 服务端程序的 cpu 占用率会很大,一直维持在 90% 以上。
不太理解这是为什么。
...全文
346
7
打赏
收藏
关于 TidTcpServer cpu占用率过高的问题
我只是简单的在 onconnect 中取得连接,然后在 onexecute 中响应客户端的简单请求。 已经确认客户端并没有发送命令了,只是 connect 没有断开还保持了而已, 此事 服务端程序的 cpu 占用率会很大,一直维持在 90% 以上。 不太理解这是为什么。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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不执行
性能测试Linux系统资源监控工具【nmon】的使用和监控数据分析
SYS_SUMM【系统资源汇总】 AAA【服务器基本信息】 BBBP【Linux执行的命令和结果】
CPU
_ALL【所有
CPU
数据的概述】
CPU
_SUMM【每个
CPU
的整体占用情况】
CPU
001【
CPU
001的每个时间点占用情况】 DISK_SUMM【磁盘的吞吐量...
解决 java 程序中
CPU
占用率
过高
问题
今天给大家分享的是 Java 程序
CPU
占用率
过高
的
问题
排查。一般遇到这种情况,项目上线后到了一定的时间会发现
CPU
的
占用率
过高
,我们如何去定位这个
问题
了,今天给大家分享的是如何解决这件事的思路。思路分为三个...
Linux系统中
CPU
占用率
过高
问题
原因分析
Linux系统中
CPU
占用率
过高
问题
原因分析
关于程序出现
cpu
占用
过高
的
问题
排查、解决办法以及避免代码中出现
cpu
占用率
过高
一般是跳入死循环导致,当出现
cpu
暂用率
过高
,请先检查代码中循环(for、while)是否死循环,如果是线程中开的while循环干一件事,请检查while中是否调用sleep睡眠,如果没有睡眠一定会造成
cpu
占用率
过高
,因为不...
关于kswapd0
CPU
占用率
高的
问题
关于kswapd0
CPU
占用率
高的
问题
很多天前就发现自己的腾讯云服务器一直有个进程
CPU
占用率
很高 上网查了很多教程都说是因为内存占用较高导致系统自动调用kswapd0进程来搬运内存数据到虚拟内存,导致
CPU
占用率
极高,...
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章