免费注册 查看新帖 |

Chinaunix

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

大并发服务器的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-02 14:38 |只看该作者 |倒序浏览
假设一个服务器要处理1000个客户端连接(TCP长连接),要为每一个客户端保持一个连接。
1、是不是要创建1000个线程(进程)来处理这些客户端的请求?
2、假设一个线程处理一个客户端的话,如果这个客户端发出的请求很快的话,
    而且这个线程处理一个请求的时间很慢,岂不是后面的请求要丢失?
不知道怎么去处理!!
大大们给个好的解决方案啊,谢谢了先

论坛徽章:
0
2 [报告]
发表于 2008-02-02 14:40 |只看该作者
多线程不太适合处理长连接吧?

论坛徽章:
0
3 [报告]
发表于 2008-02-02 14:50 |只看该作者

回复 #2 cugb_cat 的帖子

那该怎么处理长连接,单线程?恐怕更不行把

论坛徽章:
0
4 [报告]
发表于 2008-02-02 14:58 |只看该作者
原帖由 yang_crystal 于 2008-2-2 14:38 发表
假设一个服务器要处理1000个客户端连接(TCP长连接),要为每一个客户端保持一个连接。
1、是不是要创建1000个线程(进程)来处理这些客户端的请求?
2、假设一个线程处理一个客户端的话,如果这个客户端发出 ...

问题2在tcp下不会丢失的。
焦点问题是,是否一定要用长连接。搞成短连接,用连接池的话,就不会有问题1,2

论坛徽章:
0
5 [报告]
发表于 2008-02-02 15:11 |只看该作者
原帖由 ivhb 于 2008-2-2 14:58 发表

问题2在tcp下不会丢失的。
焦点问题是,是否一定要用长连接。搞成短连接,用连接池的话,就不会有问题1,2

tcp不会丢失,但是存在对方发送失败的情况吧?这样不是也丢失信息了?
现在是他们要求用长连接,我说用短连接大家不同意,短连接的情况下客户端发生异常的话服务器检测不到,
长连接该怎么解决啊?

论坛徽章:
0
6 [报告]
发表于 2008-02-02 17:04 |只看该作者
线程池加上epoll

论坛徽章:
0
7 [报告]
发表于 2008-02-02 21:10 |只看该作者
是不是要创建1000个线程(进程)来处理这些客户端的请求?
可以的,同步做法,  1000 个线程未必不可以,现在的os 可以做到的。好处是代码简单。缺点很明显, 不能扩展。线程的切换无法保证。


2、假设一个线程处理一个客户端的话,如果这个客户端发出的请求很快的话,
    而且这个线程处理一个请求的时间很慢,岂不是后面的请求要丢失?
不会, tcp 有窗口保护的,不会掉。

论坛徽章:
0
8 [报告]
发表于 2008-02-02 21:20 |只看该作者
6楼的方法应该可以吧,长连接的没做过,做短连接 线程池+epoll效果还是不错的。

论坛徽章:
0
9 [报告]
发表于 2008-02-14 15:02 |只看该作者

回复 #8 cugb_cat 的帖子

短连接存在一个问题,有时候服务器需要去主动连接在线的客户端,如果客户端在私网的话怎么找到在线客户端?
用select判断连接可读可以吗?如果可以的话那么同时有500个客户端在线的话岂不是要判断500次啊?
(WIN平台没有epoll)

[ 本帖最后由 yang_crystal 于 2008-2-14 15:12 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-02-14 15:34 |只看该作者
好像iocp可以,但不知道怎么用,也没有例子刻参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP