免费注册 查看新帖 |

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
61 [报告]
发表于 2013-02-18 18:29 |只看该作者
eastany_op 发表于 2013-02-18 17:55
回复 57# linux_c_py_php
不敢说指教。
目前为了获得峰值,连接设置保活,不拆。连接的业务短长都有,暂 ...


我的怀疑是错误的... 单独的线程做accpet也不快, 看样得优化参数了.

论坛徽章:
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
62 [报告]
发表于 2013-02-18 18:30 |只看该作者
chinaunix_wolf 发表于 2013-02-18 18:08
回复 9# linux_c_py_php  D状态是不可中断睡眠状态,主要出现在不可中断io操作的时候,比如磁盘写操作、网络 ...


13000那是短连接hsha的, 换长连接也得10万的qps啊.

现在讨论的是LF的长连接和短链接, 量级已经是15万了, 但短连接性能堪忧啊.

论坛徽章:
0
63 [报告]
发表于 2013-02-18 20:43 |只看该作者
你先确定测试程序能喂饱你的server吗?D状态没什么担忧的,epoll可以唤醒他们。你可以把epoll_wait的timeout改得尽量短,看是不是D变成R,如果是,那就是server没有被喂饱,都wait在epoll上了。

论坛徽章:
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
64 [报告]
发表于 2013-02-18 21:18 |只看该作者
sonicling 发表于 2013-02-18 20:43
你先确定测试程序能喂饱你的server吗?D状态没什么担忧的,epoll可以唤醒他们。你可以把epoll_wait的timeou ...


必须能喂饱- -... 我是单线程的测试程序, 开的越多就该越高呀.

D应该不是epoll_wait吧, epoll_wait应该是S, 我觉得是epoll_ctl引起的D.

论坛徽章:
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
65 [报告]
发表于 2013-02-18 21:44 |只看该作者
本帖最后由 linux_c_py_php 于 2013-02-18 21:45 编辑

我知道原因了, 我创建了2个epoll fd, 创建了2批线程池分别使用其中的1个fd, 创建了一个监听线程跑独立的epoll fd专门accept, 现在qps已经到250000了。

每个核的idle下降了20了,预测可以再多开2个epoll, 把cpu idle跑0,qps到达30万。

论坛徽章:
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
66 [报告]
发表于 2013-02-18 22:00 |只看该作者
本帖最后由 linux_c_py_php 于 2013-02-19 11:05 编辑

单跑echo 36万qps了,idle还剩下10+。

364725 1361195887
365032 1361195888
377951 1361195889

代码见附件,代码还是有缺点的,就是监听线程派发连接是round robin的,根据客户端连接断开情况会导致不均匀,可以通过两种办法(我能想到的)进行负载均衡,大家集思广益。


server.tar.gz (2.2 KB, 下载次数: 113)

论坛徽章:
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
67 [报告]
发表于 2013-02-19 10:36 |只看该作者
本帖最后由 yulihua49 于 2013-02-19 10:42 编辑
linux_c_py_php 发表于 2013-02-18 22:00
单跑echo 36万qps了,idle还剩下10+。

364725 1361195887

Cpu0  :  3.3%us, 69.1%sy,  0.0%ni,  0.3%id,  0.0%wa,  0.0%hi, 27.2%si,  0.0%st
Cpu1  :  4.3%us, 67.5%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi, 28.1%si,  0.0%st
Mem:   8059424k total,   530268k used,  7529156k free,    89304k buffers
Swap:  8191992k total,        0k used,  8191992k free,    71976k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                          
15272 sdbc      20   0 96372 7720  400 R 11.6  0.1   1:25.07 server                                            
15273 sdbc      20   0 96372 7720  400 R 11.6  0.1   1:25.00 server                                            
15274 sdbc      20   0 96372 7720  400 R 11.6  0.1   1:25.09 server                                            
15276 sdbc      20   0 96372 7720  400 R 11.6  0.1   1:25.01 server                                            
15270 sdbc      20   0 96372 7720  400 R 11.3  0.1   1:25.11 server                                            
15271 sdbc      20   0 96372 7720  400 R 11.3  0.1   1:25.08 server                                            
15275 sdbc      20   0 96372 7720  400 R 11.3  0.1   1:25.05 server                                            
15277 sdbc      20   0 96372 7720  400 R 11.3  0.1   1:25.05 server                                            
15284 sdbc      20   0  3912  372  304 R 11.3  0.0   1:21.04 client                                            
15279 sdbc      20   0  3912  372  304 R 11.0  0.0   1:21.14 client                                            
15282 sdbc      20   0  3912  372  304 R 11.0  0.0   1:21.40 client                                            
15283 sdbc      20   0  3912  368  304 S 11.0  0.0   1:21.43 client                                            
15285 sdbc      20   0  3912  372  304 S 11.0  0.0   1:21.18 client                                            
15286 sdbc      20   0  3912  368  304 R 11.0  0.0   1:21.21 client                                            
15288 sdbc      20   0  3912  372  304 S 11.0  0.0   1:21.48 client                                            
15280 sdbc      20   0  3912  372  304 S 10.6  0.0   1:20.86 client                                            
15281 sdbc      20   0  3912  372  304 R 10.6  0.0   1:21.18 client                                            
15287 sdbc      20   0  3912  372  304 S 10.0  0.0   1:21.10 client   


去掉了printf,系统70%,软中断25%左右,没有D。   qps=79681

论坛徽章:
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
68 [报告]
发表于 2013-02-19 11:03 |只看该作者
yulihua49 发表于 2013-02-19 10:36
Cpu0  :  3.3%us, 69.1%sy,  0.0%ni,  0.3%id,  0.0%wa,  0.0%hi, 27.2%si,  0.0%st
Cpu1  :  4.3%us, 6 ...


sys高说明机器压满了, 哈哈, 我忘了看网卡了, 估计40万qps网卡得有100M了.

代码我更新了一下, 昨天代码退出的时候循环++i了, 本来应该++epi, 悲剧.

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
69 [报告]
发表于 2013-02-19 11:49 |只看该作者
楼主英武,楼主精力充沛!

论坛徽章:
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
70 [报告]
发表于 2013-02-19 11:54 |只看该作者
本帖最后由 yulihua49 于 2013-02-19 12:49 编辑

我想把客户端移到别的机器上,
怎么看网卡流量?
linux_c_py_php 发表于 2013-02-19 11:03
sys高说明机器压满了, 哈哈, 我忘了看网卡了, 估计40万qps网卡得有100M了.

代码我更新了一下, 昨天代 ...


异地测试,太慢了,server CPU idle=70%,LAN=100M 估计是卡到网络上了。
客户端用100个进程,qps=115606:
Cpu0  :  3.1%us, 46.7%sy,  0.0%ni, 32.0%id,  0.0%wa,  0.0%hi, 18.1%si,  0.0%st
Cpu1  :  3.1%us, 45.0%sy,  0.0%ni, 33.5%id,  0.0%wa,  0.0%hi, 18.5%si,  0.0%st
Mem:   8059424k total,   541388k used,  7518036k free,    91780k buffers
Swap:  8191992k total,        0k used,  8191992k free,    79752k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                          
15879 sdbc      20   0 96372 7760  396 R 15.6  0.1   2:46.36 server                                            
15886 sdbc      20   0 96372 7760  396 R 15.6  0.1   2:42.04 server                                            
15885 sdbc      20   0 96372 7760  396 R 15.3  0.1   2:43.66 server                                            
15881 sdbc      20   0 96372 7760  396 R 14.9  0.1   2:39.98 server                                            
15882 sdbc      20   0 96372 7760  396 R 14.9  0.1   2:46.74 server                                            
15883 sdbc      20   0 96372 7760  396 S 14.9  0.1   2:43.19 server                                            
15884 sdbc      20   0 96372 7760  396 R 14.9  0.1   2:47.26 server                                            
15880 sdbc      20   0 96372 7760  396 R 14.6  0.1   2:39.49 server                                            
16585 sdbc      20   0 15164 1352  948 R  0.7  0.0   0:03.15 top         
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP