免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chary8088
打印 上一主题 下一主题

讨论一个服务器的设计方案 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-01-26 16:00 |只看该作者
要7*24小时? 业务嘛?那只能靠群集冗余了,研发是解决不了这个问题的.

论坛徽章:
0
22 [报告]
发表于 2010-01-26 17:31 |只看该作者

回复 #18 zsniper 的帖子

那也就是说最多十个线程

这怎么能并发那么多????
Apache能并发那么多,也是多进程+多线程的啊

论坛徽章:
0
23 [报告]
发表于 2010-01-27 13:20 |只看该作者

回复 #20 chary8088 的帖子

apache是一连接一进程的模式,而我们这边说的是用epoll  event-driven 的模式,不一样的。

我的建议:开N个IO线程,每个线程处于epoll_wait状态;和一个Logic线程

N个IO线程中,有1个Accept线程,他接受到连接后,把描述符用管道push给其他的IO线程,今后描述符就交给这个IO线程管理。

所有IO线程接受到完整的逻辑包后,交给Logic线程处理,由Logic线程去决定到底转发给哪个连接。

[ 本帖最后由 zsniper 于 2010-1-27 13:26 编辑 ]

论坛徽章:
0
24 [报告]
发表于 2010-01-27 14:13 |只看该作者

回复 #12 benjiam 的帖子

Memcached是由多线程和单线程两种工作模式,在编译的时候进行确定

你看到的分析应该是针对于单线程模式的,它的多线程序模式为

线程池+内存预分配+事件触发,线程之间通信是用pipe的,非常快速

[ 本帖最后由 Pro_sky 于 2010-1-27 14:17 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2010-01-27 16:46 |只看该作者
原帖由 zsniper 于 2010-1-27 13:20 发表
apache是一连接一进程的模式,而我们这边说的是用epoll  event-driven 的模式,不一样的。

我的建议:开N个IO线程,每个线程处于epoll_wait状态;和一个Logic线程

N个IO线程中,有1个Accept线程,他接受到 ...


如果都在一个进程里面,崩掉了就麻烦了。。。
对了,如果多进程和多线程方式怎么样?

论坛徽章:
0
26 [报告]
发表于 2010-01-27 17:05 |只看该作者
原帖由 zsniper 于 2010-1-27 13:20 发表
apache是一连接一进程的模式,而我们这边说的是用epoll  event-driven 的模式,不一样的。

我的建议:开N个IO线程,每个线程处于epoll_wait状态;和一个Logic线程

N个IO线程中,有1个Accept线程,他接受到 ...


99% copy了 memached 的源码。 昨天抽空看了下他的线程模型分析 *_*


多个io线程,性能会高很多吗?  还是有锁卡在那里的。当io 组合成一个包的时候 需要将数据semd 给逻辑线程。 即使你使用pipe通知了。逻辑线程来取的时候,还是需要锁住才行

比如memached  有多个io 线程, 当a b 2个线程都解析出一条命令 然后执行,执行靠哪个线程? c 线程和还是 a b 线程?

a b 的话 就涉及到 对要查询资源的一个锁问题。

在c 里面的话 就涉及到进入c 线程的 锁定。

论坛徽章:
0
27 [报告]
发表于 2010-01-27 17:11 |只看该作者
,觉得动手开写是王王道,再查瓶颈,遇佛杀佛!

论坛徽章:
0
28 [报告]
发表于 2010-01-27 17:24 |只看该作者

回复 #24 benjiam 的帖子

我早就建议楼主看看memcache的代码

我说的建议,也是把memcache的思路领出来,避免楼主再去看memcache的时间。

memcache好的思路,就该学习呀。。。。

[ 本帖最后由 zsniper 于 2010-1-27 17:37 编辑 ]

论坛徽章:
0
29 [报告]
发表于 2010-01-27 17:30 |只看该作者
我从另个方面提下。首先5W的客户端,数据量如何?千兆网卡计算,每个客户端的数据流量要求非常低,不然肯定完不转。如果的确超越了单机的网卡吞吐量,那就必须做分布式架构,这肯定会影响整个服务器的设计。所以我觉得动手前,先考虑一下硬件的状况,实际的流量等因素,包括预算等,再考虑实现细节的问题:),这样设计出来的东西会比较切合需求。

论坛徽章:
0
30 [报告]
发表于 2010-01-27 17:33 |只看该作者

回复 #24 benjiam 的帖子

我没有说多个IO线程就会带来很大性能的提升啊,我一直都说需要设计合理,避免巨锁,还是会带来一定的性能提升的。

我的服务器也一直是一个IO线程,用freebsd的kqueue,但最近测试下来,多个IO线程的确会带来一定的性能提升
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP