免费注册 查看新帖 |

Chinaunix

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

多线程socket一问!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-01 16:31 |只看该作者 |倒序浏览
多线程socket一问:在windows和linux下怎么防止出现TIME_WAIT或者TIME_CLOSE状态;
在多线程通讯中,如何降低CPU的使用率,以提高性能!
请举个具体的例子源码!如果同时有10000个客户端同时连接一个服务器,怎么处理呢?
我目前我的程序测试的话会造成CPU使用率老是在100%,资源很吃紧,而且因为我是用短连接通讯,所以每次都会有一个TIME_WAIT状态出现!我需要解决方法!

论坛徽章:
0
2 [报告]
发表于 2004-09-02 17:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2004-09-02 19:58 |只看该作者

多线程socket一问!!!

TIME_WAIT是TCP的一个状态,是TCP协议的一部分,看看TCP/IP详解吧。

论坛徽章:
0
4 [报告]
发表于 2004-09-03 00:19 |只看该作者

多线程socket一问!!!

我想降低time_wait的等待时间也许是你想要表达的意思。10000个用户具体用什么io方式(同步/异步),用什么并发模式(一个客户一个线成/线程池),需要根据你的服务类型来确定,不是一件容易的事情。但是通常情况下线程池应该是一个比较不错的选择。

网络服务器的优化是一个非常复杂的问题,涉及的方面太多,恐怕一两句话谁也说不清楚。只能我们慢慢讨论,慢慢学习

论坛徽章:
0
5 [报告]
发表于 2004-09-03 08:50 |只看该作者

多线程socket一问!!!

setsockopt更改socket的linger属性可以迫使连接非正常中止,避免TIME_WAIT。
不过不太好吧~

论坛徽章:
0
6 [报告]
发表于 2004-09-03 09:52 |只看该作者

多线程socket一问!!!

建议使用select或poll进行服务器端的开发.

论坛徽章:
0
7 [报告]
发表于 2004-09-04 01:10 |只看该作者

多线程socket一问!!!

如果处理10000个请求就是需要这多么CPU能力,那应该是没有办法减少的了
如果是线程模型有问题,请参考我关于线程模型的讨论:
http://bbs.chinaunix.net/forum/23/20040903/400264.html
考虑与应用相关的优化很可能能够大大减少负载。
另外,使用支持简单重发机制的UDP来代替TCP,可能在响应时间上有提高。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-09-04 10:53 |只看该作者

多线程socket一问!!!

这种应用只能用polling+固定个数线程池的处理机制,不能短连接,
否则你即使有个大型机也难保证资源足够用
如果是网上的应用你现在的方式很容易被攻击瘫掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP