Socket 并发问题

xz_xq 2011-06-13 05:34:26
客户端并发2000个连接请求,Socket服务端接到请求然后通过WCF调用后端业务处理,过程中CPU占用90%+,客户端连接成功数只有200个左右,
如果是只做连接不做业务处理的话,成功率可达到100%。请问我的瓶颈出在哪,大侠们有什么好的建议。
...全文
157 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maa 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xz_xq 的回复:]
是长连接。
可能与机器性能有关,刚用一台性能比较好的机器做服务器端,2000个连接请求并触发后端业务处理,可成功处理1600个请求。现在头下命令:即便服务器端业务处理慢些,也要保障所有客户端请求都能连接上,请大家支招。[/Quote]

如果是长连接的话,那跟业务逻辑的设计和执行效率有非常大的关系了,可否介绍一下单次业务大致的处理流程呢?

需要特别问一下的就是后台业务有没有连接并读写数据库的操作呢?如果有的话,这个跟数据库的连接是固定一个(或者几个)还是每个客户端连接都会触发服务端跟数据库建立一个连接呢?
xz_xq 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mafangming 的回复:]
1.如果只做连接不做业务处理,你说的100%成功率是否指的是“这种情况下是否可以同时保持2000个客户端连接在线(不断链,即TCP长连接)”?还是说你的2000个链接请求是TCP短连接,连上来以后会自动断开?

2.如果是短连接的情况,怀疑服务端对TCP连接数有限制,比如限制200,当逻辑完成后链接断开,这时才能接入下一个客户端连接。这个修改起来应该比较方面,不是服务端本身的性能问题。

……
[/Quote]

是长连接。
可能与机器性能有关,刚用一台性能比较好的机器做服务器端,2000个连接请求并触发后端业务处理,可成功处理1600个请求。现在头下命令:即便服务器端业务处理慢些,也要保障所有客户端请求都能连接上,请大家支招。
htynkn 2011-06-13
  • 打赏
  • 举报
回复
应该是连接限制的问题,和性能关系不大
Maa 2011-06-13
  • 打赏
  • 举报
回复
1.如果只做连接不做业务处理,你说的100%成功率是否指的是“这种情况下是否可以同时保持2000个客户端连接在线(不断链,即TCP长连接)”?还是说你的2000个链接请求是TCP短连接,连上来以后会自动断开?

2.如果是短连接的情况,怀疑服务端对TCP连接数有限制,比如限制200,当逻辑完成后链接断开,这时才能接入下一个客户端连接。这个修改起来应该比较方面,不是服务端本身的性能问题。

3.如果是长连接的情况,说明服务端在TCP连接数方面没达到限制的规格,这种情况下暂时还没想到原因,需要lz提供更多的信息,呵呵。
xz_xq 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuexiaodong2009 的回复:]
估计是调用WCF的问题,改为异步方法试试
[/Quote]

Socket服务端接到连接后就用异步方式执行后续操作的。
xuexiaodong2009 2011-06-13
  • 打赏
  • 举报
回复
估计是调用WCF的问题,改为异步方法试试

110,533

社区成员

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

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

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