免费注册 查看新帖 |

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
81 [报告]
发表于 2013-02-22 14:52 |显示全部楼层
@starwing83 的确可以, 可能之前哪里写错了引起的, 搞定了.

论坛徽章:
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
82 [报告]
发表于 2013-02-22 15:19 |显示全部楼层
原来昨天测试开了太多客户端了, 实际上嵌入lua程序的性能完全没有下降, 还是近50万的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
83 [报告]
发表于 2013-02-25 14:35 |显示全部楼层
yulihua49 发表于 2013-02-25 14:23
终于把这个史上最屌的服务器搞定。
用select,支持1024个连接,达到70000qps。
我的机器只有2核,线程 ...


我来学习一下。

论坛徽章:
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
84 [报告]
发表于 2013-02-25 14:57 |显示全部楼层
本帖最后由 linux_c_py_php 于 2013-02-25 15:01 编辑

半同步半异步的, main线程负责accept,  sched线程负责select检测事件, 然后加锁从fdset中去掉, 然后通过next域构造的队列把连接送给worker线程, 在worker线程里做handle完成后再加锁恢复fdset.

那个beat[2]没用吧...

论坛徽章:
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
85 [报告]
发表于 2013-02-25 15:19 |显示全部楼层
可以跑15万左右, 开了40多个压力才顶上去, 估计是锁太厉害了.

不过把I/O放到多线程里去做提高了I/O并发性, 值得借鉴. 之前我做的hsha把I/O都放在异步层了, 异步线程CPU直接就跑满到瓶颈了.

你可以把worker里对事件集合的取消操作以及main线程对事件集合的添加操作都做成Pipe+queue, fdset的操作全部让sched线程来做, 可以避免掉同步fdset的代价, 应该能稍微好点.

论坛徽章:
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
86 [报告]
发表于 2013-02-25 15:27 |显示全部楼层
iw1210 发表于 2013-02-25 15:24
回复 153# linux_c_py_php


是的, 他把server做成了hsha了.

论坛徽章:
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
87 [报告]
发表于 2013-02-25 16:21 |显示全部楼层
iw1210 发表于 2013-02-25 16:03
有个疑问用select就行了,为什么还出现epoll,iocp什么的?


select只能管FD_SETSIZE之内的fd, 进程受限啊哥.

论坛徽章:
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
88 [报告]
发表于 2013-02-25 17:15 |显示全部楼层
锁有点太猛了, 想办法把FDSET上的锁弄掉看看

论坛徽章:
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
89 [报告]
发表于 2013-02-25 17:19 |显示全部楼层
yulihua49 发表于 2013-02-25 17:17
程序马上会发疯的。


有锁这样不错了, 多线程主要是为了并发能力, 也不能单看qps.

论坛徽章:
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
90 [报告]
发表于 2013-02-25 17:23 |显示全部楼层
要想再快, 那么就是多个sched线程多个FDSET多把锁, 把锁竞争减小就行了, 和多epollfd一样.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP