免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3164 | 回复: 18
打印 上一主题 下一主题

[C] 测试服务器出现很奇怪的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-26 11:13 |只看该作者 |倒序浏览
在一台虚拟机上启动300个客户端, 另外一台虚拟机跑一台serv【一个文件服务器,客户端与服务器保持一个长连接】。经过一段时间文件下载之后, 发现服务器发回去的包,总有几个client接收不到,serv这边发送已经成功。 不晓得是何原因?

论坛徽章:
0
2 [报告]
发表于 2008-04-26 18:04 |只看该作者
TCP的发送成功只保证数据包送进内核栈

论坛徽章:
0
3 [报告]
发表于 2008-04-26 18:18 |只看该作者
同意二楼,发送成功不代表接受成功.

论坛徽章:
0
4 [报告]
发表于 2008-04-26 21:26 |只看该作者
问句LZ,启动300个客户端是怎么实现的啊?

论坛徽章:
0
5 [报告]
发表于 2008-04-28 00:27 |只看该作者
经过进一步的测试分析, 发现经过一段时间的文件下载之后,会随机的存在几台client发送数据到服务器成功( 服务器读取到的数据包可以分析得到),而服务器开始读这个数据包的时候,已经是client超时关闭sock,server这个时候,好像是有两次事件触发(一次是client发送数据包的事件, 一次是client close的动作。 )
很奇怪啊, client在发送数据包之后, 然后等待超时的时间内,服务器一直没有事件触发, 然而,等到client关闭后, 这个时候,才有事件触发, 而且一下两个接连而来,先是读取该数据,然后又读到对端close sock。诡异 ~

服务器是 epoll+线程池模式。采用边沿触发。
【回楼上, 启动三百个client 很容易, 只要配置够,写个脚本就能跑起来】

论坛徽章:
0
6 [报告]
发表于 2008-04-28 08:58 |只看该作者
线程有没有休眠?

论坛徽章:
0
7 [报告]
发表于 2008-04-28 10:04 |只看该作者
>>会随机的存在几台client发送数据到服务器成功( 服务器读取到的数据包可以分析得到),而服务器开始读这个数据包的时候,已经是client超时关闭sock

这句话真没看懂了,前后矛盾,"读取到的数据可以分析得到"又怎么能"开始读数据包的时候client关闭"了?

论坛徽章:
0
8 [报告]
发表于 2008-04-28 10:13 |只看该作者

回复 #6 yang_crystal 的帖子

肯定没有,即使一个线程休眠了,还有其他的线程可用的。服务器是临时分配一个线程给某一个sock使用。

论坛徽章:
0
9 [报告]
发表于 2008-04-28 10:14 |只看该作者
没有接受确认

论坛徽章:
0
10 [报告]
发表于 2008-04-28 10:15 |只看该作者
传输协议设计的bug,跟系统没关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP