忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: wang290

千万级并发实现的秘密:内核不是解决方案,而是问题所在! [复制链接]

论坛徽章:
10
IT运维版块每日发帖之星
日期:2015-07-13 22:59:28数据库技术版块每日发帖之星
日期:2016-03-10 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-09 06:20:00IT运维版块每日发帖之星
日期:2015-11-02 06:20:00IT运维版块每日发帖之星
日期:2015-06-23 22:20:00程序设计版块每日发帖之星
日期:2015-06-21 22:20:00每日论坛发贴之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-06-14 22:20:00IT运维版块每日发帖之星
日期:2016-08-02 06:20:00
发表于 2014-01-04 20:14 |显示全部楼层
wang290 发表于 2013-05-20 16:38
摘要:C10K问题让我们意识到:当并发连接达到10K时,选择不同的解决方案,笔记本性能可能会超过16核服务器。 ...

一种思路,虽然需要尝试,但值得一读。

论坛徽章:
10
IT运维版块每日发帖之星
日期:2015-07-13 22:59:28数据库技术版块每日发帖之星
日期:2016-03-10 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-09 06:20:00IT运维版块每日发帖之星
日期:2015-11-02 06:20:00IT运维版块每日发帖之星
日期:2015-06-23 22:20:00程序设计版块每日发帖之星
日期:2015-06-21 22:20:00每日论坛发贴之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-06-14 22:20:00IT运维版块每日发帖之星
日期:2016-08-02 06:20:00
发表于 2014-01-04 20:17 |显示全部楼层
mordorwww 发表于 2013-12-16 11:21
木有看懂
千万级并发的瓶颈在哪里?
CPU?Memory? IO?

应用程序管理内存和CPU

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2014-01-06 09:04 |显示全部楼层
本帖最后由 mordorwww 于 2014-01-06 09:14 编辑
hiyachen 发表于 2014-01-04 20:17
应用程序管理内存和CPU



CPU对liuux内核还有区别?
还有内存管理,有那么复杂么,用数组就是了,对服务器来讲,这点内存真不算啥

论坛徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大牛徽章
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29处女座
日期:2014-04-21 11:51:59辰龙
日期:2014-05-12 09:15:10NBA常规赛纪念章
日期:2015-05-04 22:32:03
发表于 2014-02-09 10:37 |显示全部楼层
hiyachen 发表于 2014-01-04 20:17
应用程序管理内存和CPU


确实是,高并发下的问题,很多都颠覆了我们以往考虑问题的角度

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2014-02-10 11:32 |显示全部楼层
wang290 发表于 2014-02-09 10:37
确实是,高并发下的问题,很多都颠覆了我们以往考虑问题的角度


很抽象

论坛徽章:
3
寅虎
日期:2014-08-22 14:15:29戌狗
日期:2014-08-22 09:53:36射手座
日期:2014-08-18 12:15:53
发表于 2014-02-10 15:35 |显示全部楼层
观点真的很新颖,如果能有具体实现案例就好了,

论坛徽章:
0
发表于 2014-02-11 11:20 |显示全部楼层
不明觉厉,学习了,多谢!

论坛徽章:
0
发表于 2014-02-11 11:24 |显示全部楼层
    如果每秒处理的连接从5千增加到1万,你会怎么做?比方说,你升级硬件并且提高处理器速度到原来的2倍。发生了什么?你得到两倍的性能,但你没有得到两倍的处理规模。每秒处理的连接可能只达到了6000。你继续提高速度,情况也没有改善。甚至16倍的性能时,仍然不能处理1万个并发连接。所以说性能和可扩展性是不一样的。

    问题在于Apache会创建一个CGI进程,然后关闭,这个步骤并没有扩展。

    为什么呢?内核使用的O(N^2)算法使服务器无法处理1万个并发连接。

    内核中的两个基本问题:

    连接数=线程数/进程数。当一个数据包进来,内核会遍历其所有进程以决定由哪个进程来处理这个数据包。

    连接数=选择数/轮询次数(单线程)。同样的可扩展性问题,每个包都要走一遭列表上所有的socket。

    解决方法:改进内核使其在常数时间内查找。

    使线程切换时间与线程数量无关。
    使用一个新的可扩展epoll()/IOCompletionPort常数时间去做socket查询。

    因为线程调度并没有得到扩展,所以服务器大规模对socket使用epoll方法,这样就导致需要使用异步编程模式,而这些编程模式正是Nginx和Node类型服务器具有的;所以当从Apache迁移到Nginx和Node类型服务器时,即使在一个配置较低的服务器上增加连接数,性能也不会突降;所以在10K连接时,一台笔记本电脑的速度甚至超过了16核的服务器。

点睛之笔,佩服。

论坛徽章:
0
发表于 2014-02-11 11:48 |显示全部楼层
怎样编写规模较大的软件?

如何改变你的软件,使其规模化?许多只提升硬件性能去支撑项目扩展的经验都是错误的,我们需要知道性能的实际情况。

要达到到更高的水平,需要解决的问题如下:

    数据包的可扩展性
    多核的可扩展性
    内存的可扩展性


漂亮,以前一直有个疑问”为什么苹果的iPhone 4硬件配置差,但性能却比ZTE v880性能好太多太多“,通过你的帖子,我想已大概有了答案了,再次感谢。

论坛徽章:
0
发表于 2014-05-04 23:12 |显示全部楼层
神啊。。。这个帖子必须留存备查~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

久等啦!10张门票开启你的DTCC2017之旅

2017中国数据库技术大会将于2017年5月11-13日如约而至,本届大会以“数据驱动•价值发现”为主题,共设定2大主场和21个技术专场,云集海内外120+位技术大牛,共同探讨Oracle、MySQL、NoSQL、云端数据库、区块链、深度学习等领域的前瞻性热点话题。
即日起,填写DTCC2017会前调查问卷,即有机会赢取价值2600元的大会门票1张!仅限10张!
----------------------------------------
活动截止时间:2017年5月5日统一公布

问卷入口>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP