免费注册 查看新帖 |

Chinaunix

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

[其他] [基于Epoll内置Leader-Follower服务端实现, 已可达50万echo qps(全新支持Lua啦)] [复制链接]

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
121 [报告]
发表于 2013-02-21 20:00 |只看该作者
starwing83 发表于 2013-02-21 18:11
另外,LF模式主要是为了应对惊群问题吧?现在没有这个问题了吧?还需要用这个模式么?


LF+ONESHOT做的, LF测试比ET效率要高, 不知道是否是用法有误.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
122 [报告]
发表于 2013-02-21 20:18 |只看该作者
starwing83 发表于 2013-02-21 18:10
回复 112# linux_c_py_php


我再试试啊, 我就这么用的, 活生生没Move过去., 汗

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
123 [报告]
发表于 2013-02-22 08:36 |只看该作者
回复 111# iw1210


    本地lo,虽然也过了协议栈但是还是和网络延迟不能同日而语……

当然这代表服务器本身不会是瓶颈了

实际应用的时候肯定不会这么高的啦

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
124 [报告]
发表于 2013-02-22 10:22 |只看该作者
本帖最后由 yulihua49 于 2013-02-22 10:23 编辑
iw1210 发表于 2013-02-21 16:49
连接多少个?不会这么脆弱吧!
怎么死掉一部分?什么现象?

10个连接,每个发10000包,最后有4、5个退不出来。丢事件了。

你弄的啥样?你不是一直坚持用select的吗?
楼主给我说的办法是多线程的,不是线程池,依然是同步IO不是异步的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
125 [报告]
发表于 2013-02-22 10:24 |只看该作者
linux_c_py_php 发表于 2013-02-21 20:00
LF+ONESHOT做的, LF测试比ET效率要高, 不知道是否是用法有误.

LT吧?我认为网络饱和看不出二者区别,CPU饱和才能看出来。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
126 [报告]
发表于 2013-02-22 10:52 |只看该作者
yulihua49 发表于 2013-02-22 10:24
LT吧?我认为网络饱和看不出二者区别,CPU饱和才能看出来。


额, 让我先来重新试试为什么xmove挪不动吧, HOHO.

论坛徽章:
0
127 [报告]
发表于 2013-02-22 10:53 |只看该作者
yulihua49 发表于 2013-02-22 10:22
10个连接,每个发10000包,最后有4、5个退不出来。丢事件了。

你弄的啥样?你不是一直坚持用select的吗?
楼主给我说的办法是多线程的,不是线程池,依然是同步IO不是异步的。 ...


才10个连接就不行了,不会吧,几个线程用select?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
128 [报告]
发表于 2013-02-22 11:06 |只看该作者
starwing83 发表于 2013-02-22 08:36
回复 111# iw1210


嗯, 过网卡的话得看网卡性能, 公司网卡都优化了网卡对队列和CPU亲缘性, 能跑20万左右就极限了.

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
129 [报告]
发表于 2013-02-22 11:08 |只看该作者
本帖最后由 yulihua49 于 2013-02-22 11:10 编辑
iw1210 发表于 2013-02-22 10:53
才10个连接就不行了,不会吧,几个线程用select?

一个专用线程进行select和任务分派。
  1. void *sched(void *arg)
  2. {
  3. int stat,i;
  4. char beatbuff[CONN_MAXFD+1];
  5. fd_set rf,wf,ef;

  6. fprintf(stderr,"sched:start!\n");
  7.         FD_ZERO(&rfds);
  8.         FD_ZERO(&wfds);
  9.         FD_ZERO(&efds);
  10.         stat=pipe2(beat,O_NONBLOCK);
  11.         if(stat<0) {
  12.                 fprintf(stderr,"create pipe beat err=%d:%s\n",
  13.                                 errno,strerror(errno));
  14.                 return NULL;
  15.         }
  16.         while(1) {
  17.                 rf=rfds;
  18.                 wf=wfds;
  19.                 ef=efds;
  20.                 FD_SET(beat[0],&rf);
  21.                 stat=select(CONN_MAXFD+1,&rf,&wf,&ef,NULL);
  22.                 if(stat<0) break;
  23. //              pthread_mutex_lock(&beatLock);
  24.                 beatc=0;
  25. //              pthread_mutex_unlock(&beatLock);
  26. fprintf(stderr,"sched:stat=%d\n",stat);
  27.                 for(i=0;i<CONN_MAXFD;i++) {
  28.                         stat=0;
  29.                         if(FD_ISSET(i,&rf)) {
  30.                                 if(i==beat[0]) {
  31.                                         read(beat[0],beatbuff,sizeof(beatbuff));
  32.                                         continue;
  33.                                 }
  34.                                 stat |= EV_IN;
  35.                                 FD_CLR(i,&rfds);
  36.                         }
  37.                         if(FD_ISSET(i,&wf)) {
  38.                                 stat |= EV_OUT;
  39.                                 FD_CLR(i,&wfds);
  40.                         }
  41.                         if(FD_ISSET(i,&ef)) {
  42.                                 stat |= EV_ERR;
  43.                                 FD_CLR(i,&efds);
  44.                         }
  45.                         if(stat) {
  46.                                 g_conn_table[i].events=stat;
  47.                                 pthread_mutex_lock(&rdyLock);
  48.                                 q_add(i,&rdy_q);//加入就绪队列
  49.                                 pthread_mutex_unlock(&rdyLock);
  50.                                 pthread_cond_signal(&rdyCond);
  51.                         }
  52.                 }
  53.         }
  54.         shut_server=1;
  55.         close(beat[0]);
  56.         close(beat[1]);
  57. }
复制代码

论坛徽章:
0
130 [报告]
发表于 2013-02-22 11:23 |只看该作者
yulihua49 发表于 2013-02-22 10:22
10个连接,每个发10000包,最后有4、5个退不出来。丢事件了。

你弄的啥样?你不是一直坚持用select的吗 ...


4、5个退不出来,什么意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP