免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4175 | 回复: 10

[C] 关于单线程select的一点疑问 [复制链接]

论坛徽章:
0
发表于 2014-08-19 10:20 来自手机 |显示全部楼层
前两天看见论坛一个大牛写了个进程加线程处理50万用户同时在线的服务器,其中有疑问的一点是他单线程处理1000个客户端,用的是select,我的疑惑是当这个线程同时有多个客户端发起请求,是不是就需要排队了,当用户群比较活跃的时候,效率是不是比较低了?还是有其他比较好的处理方法?不吝赐教。

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2014-08-19 10:29 |显示全部楼层
50万用户比较活跃,一般网络早成瓶颈了。

50W,每个线程1000个,那有500个线程,对于一般服务器CPU个数来说也已经够多了

论坛徽章:
0
发表于 2014-08-19 10:36 来自手机 |显示全部楼层
本帖最后由 nanjingnew4 于 2014-08-19 10:37 编辑

这个帖子里的 http://bbs.chinaunix.net/thread-4113279-1-1.html

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2014-08-19 10:41 |显示全部楼层
nanjingnew4 发表于 2014-08-19 10:36
这个帖子里的 http://bbs.chinaunix.net/thread-4113279-1-1.html


活跃连接多,排队是必须的,开再多的线程也没用。
另外一种是用epoll,每个线程负责更多的连接。
具体什么合适要看具体的应用情况。

论坛徽章:
0
发表于 2014-08-19 10:45 |显示全部楼层
hellioncu 发表于 2014-08-19 10:41
活跃连接多,排队是必须的,开再多的线程也没用。
另外一种是用epoll,每个线程负责更多的连接。
具体 ...


如果我在线程中再开线程用作逻辑处理,这是一个好办法吗

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2014-08-19 10:51 |显示全部楼层
nanjingnew4 发表于 2014-08-19 10:45
如果我在线程中再开线程用作逻辑处理,这是一个好办法吗


好不好要看瓶颈在哪里。如果是CPU成瓶颈了,应该考虑把逻辑处理移到别的服务器上,或者把连接分担到其他服务器。

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
发表于 2014-08-19 10:59 |显示全部楼层
CPU核的数目时固定的,开太多线程只会成为内核调度的负担。

论坛徽章:
0
发表于 2014-08-19 16:50 |显示全部楼层
hellioncu 发表于 2014-08-19 10:51
好不好要看瓶颈在哪里。如果是CPU成瓶颈了,应该考虑把逻辑处理移到别的服务器上,或者把连接分担到其他 ...


问个问题,如果在本机架设服务,并在本机发起大量socket连接,程序来不及处理所有连接,有没有可能导致操作系统挂起,不考虑程序bug

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2014-08-19 16:59 |显示全部楼层
nanjingnew4 发表于 2014-08-19 16:50
问个问题,如果在本机架设服务,并在本机发起大量socket连接,程序来不及处理所有连接,有没有可能导致 ...


不会,来不及的话会表现为连接失败

论坛徽章:
0
发表于 2014-08-19 17:03 |显示全部楼层
hellioncu 发表于 2014-08-19 16:59
不会,来不及的话会表现为连接失败


刚测试了下大量并发,导致telnet 23直接卡死,过了一段时间才恢复
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP