t窗体程序,在windows server 2012 下 TCP并发连接是否有限制?

he_hawk 2020-05-21 08:18:05
一个C#写的窗体程序,运行在一个服务器(服务器A)windows server2012 r2 stand下出现问题。
问题现象有三个:
1、我的程序同时要访问830个TCP设备(设备当服务),同时设备的数据要实时入库,此时会有很多设备连异常,数据收发也存成严重组包的情况,正常收发一个数据是20字节以内,延迟组包(估计是因为延迟TCP或系统将多个包组合在一起)后,有时接收到超过1024字节的数据,还经常超时断开连接,但用其它工具连接设备端收发正常;

2、我的程序同时提供一个TCP服务监听,用客户端工具能连接到服务端,但客户端发送的数据客户端收不到;

3、我的程序订阅其它机器的MQTT主题(也是TCP连接),别人在对应的主题下发布信息,我的程序收不到。

请问这应该是什么原因导致的呢?

================

自己测试只访问300个以内的设备,各种服务都相当正常,访问400个设备时,就可能出现上述问题,同时访问830个设备,上述问题2、3是一定出现。

但此时用TCP工具建立服务端,TCP工具的客户端还能连接上,能正常收发数据。

系统自带的性能监测工具中,在网络下的TCP连接数据,图是满绿色的,数值是10

============
我们另一个服务器B,性能监测工具 网络下的TCP连接数尽然是500,B服务器目前监测的168个设备,TCP服务正常,B服务器CPU使用5%,内存使用9% 。统计TCP建立的连接数是 305 (用的统计命令 netstat -ano|find "ESTABLISHED" /c )

B服务器监测830个设备也会出现上述问题。 性能监测工具 网络下的TCP连接数也变成是10(看来这个就是图表比例值,不是TCP连接数)服务器CPU使用20%,内存使用10% 。统计TCP建立的连接数是 920-990 (用的统计命令 netstat -ano|find "ESTABLISHED" /c ) 统计的连接数总在变


前述提问服务器A(暂称为A服务器),监测830个设备时,系统资源也够用,系统CPU使用28%,内存使用30%

在微软技术支持发帖没有回复。
https://social.technet.microsoft.com/Forums/zh-CN/56fff082-0221-4663-8e1f-9d63911a5d61/1996820010net31383203076529222312windows-server-2012-19979?forum=winserver8
...全文
1153 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
泉低调前行 2020-05-26
  • 打赏
  • 举报
回复
引用 12 楼 sichuanwww 的回复:
UDP考虑过吗?
版主都结帖了 !应该解决了
sichuanwww 2020-05-25
  • 打赏
  • 举报
回复
UDP考虑过吗?
  • 打赏
  • 举报
回复
如果异步处理还解决不了可以尝试分多个端口接收
  • 打赏
  • 举报
回复
引用 9 楼 he_hawk 的回复:
830个设备,是长连接 长连接,在接收端处理了TCP组合包的数据,及时处理完基本没有发现组合数据包的情况 830个设备,一秒内可能有10多次20字节左右的数据(830设备 终端,终端下有具体设备,实时监测,数据变化就上报)
1、注意通信线程和业务处理分离。通信只管通信,数据的业务处理交给业务处理模块 2、830个长连接按说还好,数据量按每秒830*10个数据包,也就是说你的业务处理模块处理能力需要达到8300笔/秒,要看处理过程是否有io等操作,如果涉及到的话,单机处理压力还是不小的。需要根据实际情况实际分析。
he_hawk 2020-05-22
  • 打赏
  • 举报
回复
830个设备,是长连接 长连接,在接收端处理了TCP组合包的数据,及时处理完基本没有发现组合数据包的情况 830个设备,一秒内可能有10多次20字节左右的数据(830设备 终端,终端下有具体设备,实时监测,数据变化就上报)
he_hawk 2020-05-22
  • 打赏
  • 举报
回复
想要处理及时,然后固定的开线程太多,造成内存泄漏(实际内存够,占用200多M),异常使用线程池,发现内存是不停的上涨,所以采用固定线程,但现在设备太多,线程太多,然后出现内存泄漏。
he_hawk 2020-05-22
  • 打赏
  • 举报
回复
830个设备,长连接,接收处理1秒完成不了,异步处理 BeginReceive,BeginSend这种收发,
引用 6 楼 泉低调前行 的回复:
[quote=引用 5 楼 失足成万古风流人物 的回复:] [quote=引用 4 楼 泉低调前行 的回复:] 看来楼主发现自己问题了!希望楼主解决问题后分享经验
出现另一个问题时,还会回来滴[/quote] 可以的哥!静静等分享[/quote] 确实如大神说的,出另一个问题了。 这个主题的问题就是按你说的方式,没处理及时,造成网络拥堵了。
泉低调前行 2020-05-22
  • 打赏
  • 举报
回复
引用 5 楼 失足成万古风流人物 的回复:
[quote=引用 4 楼 泉低调前行 的回复:] 看来楼主发现自己问题了!希望楼主解决问题后分享经验
出现另一个问题时,还会回来滴[/quote] 可以的哥!静静等分享
  • 打赏
  • 举报
回复
引用 4 楼 泉低调前行 的回复:
看来楼主发现自己问题了!希望楼主解决问题后分享经验
出现另一个问题时,还会回来滴
泉低调前行 2020-05-22
  • 打赏
  • 举报
回复
看来楼主发现自己问题了!希望楼主解决问题后分享经验
threenewbee 2020-05-21
  • 打赏
  • 举报
回复
本身tcp没有限制,但是你这种同时保持800多连接还要实时性还有组包,代码本身存在问题的几率很大。
dmankill 2020-05-21
  • 打赏
  • 举报
回复
用tcp写东西就要注意粘包,要根据数据协议来分包
  • 打赏
  • 举报
回复
830个设备,长连接还是短连接? 长连接有没有处理粘包问题? 830个设备,一秒内会有多少数据上来? 你的程序1秒内能否处理完所有数据?
内容概要:本文围绕基于两阶段鲁棒优化算法的微网多电源容量配置问题展开研究,针对微电网中风能、光伏、柴油发电机及储能系统等多元电源的容量规划难题,提出了一种能够有效应对源荷不确定性的优化方法。该方法采用两阶段鲁棒优化框架,第一阶段确定电源的最优配置容量,第二阶段通过调整运行策略应对不确定性扰动,从而提升系统在复杂环境下的适应性与经济性。文中结合Matlab实现了完整的算法建模与仿真验证,提供了清晰的代码实现路径,展示了模型在典型场景下的求解过程与结果分析,具有较强的工程应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微电网、优化调度等相关领域的科研人员及研究生。; 使用场景及目标:①解决含高比例可再生能源的微电网系统中电源容量配置的鲁棒性问题;②掌握两阶段鲁棒优化建模方法及其在能源系统中的实际应用;③为应对源荷不确定性提供可复现的技术方案与仿真工具支持; 阅读建议:此资源侧重于算法建模与实际仿真相结合,建议读者在理解鲁棒优化基本理论的基础上,结合Matlab代码逐模块分析,重点掌握不确定集构建、列与约束生成(C&CG)算法实现以及运行结果的经济性与可靠性评估方法,以实现从理论到实践的贯通。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧