面试 mysql 如何应对百万并发? - V2EX
markfang

面试 mysql 如何应对百万并发?

  •  1
     
  •   markfang Mar 9, 2017 6026 views
    This topic created in 3351 days ago, the information mentioned may be changed or developed.
    Supplement 1    Mar 9, 2017
    一个用户榜单 瞬间有 100W 用户去那个页面看数据
    56 replies    2017-03-13 09:09:48 +08:00
    knightdf
        1
    knightdf  
       Mar 9, 2017   8
    开一百万台 mysql
    wangdu2012
        2
    wangdu2012  
       Mar 9, 2017 via iPhone
    问这种问题的人没脑子没水平
    isphone
        3
    isphone  
       Mar 9, 2017
    ipeony
        4
    ipeony  
       Mar 9, 2017
    读写分离,分库分表 扯点~
    thai9quohs6jae1C
        5
    thai9quohs6jae1C  
       Mar 9, 2017   5
    你可以问他 “如何实现百万并发”
    em70
        6
    em70  
       Mar 9, 2017
    让老板掏钱买 10 万台服务器就行了.

    题目又没限制成本,又没限制必须纯技术解决,也没说明目前的配置,烂题
    lfautumn
        7
    lfautumn  
       Mar 9, 2017
    把阿里巴巴买下就行啦
    vus520
        8
    vus520  
       Mar 9, 2017   6
    我没有做过单机这么大的量,目前单台 LB 上最大的并发连接是 18 万 /s (多台 LB ,要是合起来算应该超过百万连接,毕竟用户数在百万以上)

    这里的并发,如果仅是『连接』,并无实际请求和处理,常见的 32G 内存的服务器完全可以抗住 C1000K ,这个问题不用讨论。
    如果有读写行为,最好按读写分开计算。

    1 ,按常见只读业务, mysql 达到 3-5w QPS 比较容易达到,也就是说 20 台 mysql 机器就能抗下来,只需要分配好主从节点,前端再加上一些缓存,如果有 50%左右的缓存命中, Mysql 的读取压力就能降到 50 wQPS ,一点问题都没有,妥妥的。

    2 ,按常见的写业务, 100wQPS 的写我觉得是相当恐怖的,感觉 mysql 还是算了吧,随便上个 hadoop , es ,前端套个队列,有压力,但估计问题也不大。

    最后,我实再编不下去了。
    QQ2112755791
        9
    QQ2112755791  
       Mar 9, 2017
    没有什么实际意义吧。有强大的服务器支撑还是可以实现。
    shiny
        10
    shiny  
    PRO
       Mar 9, 2017
    取决于业务类型才有意义吧
    HLT
        11
    HLT  
       Mar 9, 2017   1
    如果单就这一句话。。。。对方简直是个煞笔
    mhycy
        12
    mhycy  
       Mar 9, 2017
    前些天还有个在这问类似的问题
    说是开放思维。。。。
    echo1937
        13
    echo1937  
       Mar 9, 2017
    每秒百万,每日八六十四百亿吧,考虑访问转化率 10%,至少八千亿的日 PV ,这是什么服务?
    tabris17
        14
    tabris17  
       Mar 9, 2017
    百万并发个啥?具体场景不说,烧饼问题
    yxslnmp
        15
    yxslnmp  
       Mar 9, 2017
    曾经就被问过这类的烧饼问题。表示聊不下去,还得强颜欢笑
    markfang
        16
    markfang  
    OP
       Mar 9, 2017
    @tabris17 一个用户榜单 瞬间有 100W 用户去那个页面看数据
    markfang
        17
    markfang  
    OP
       Mar 9, 2017
    @wangdu2012 面试官没水平?
    Pastsong
        18
    Pastsong  
       Mar 9, 2017
    买机器啊
    binux
        19
    binux  
       Mar 9, 2017
    百万并发 != 百万并发落到 mysql 上啊
    yidinghe
        20
    yidinghe  
       Mar 9, 2017
    不能让这些请求同时到达数据库,缓存肯定是要用的,而且是每台负载均衡的服务器将缓存内容主动加载到本地,而不是当请求来时去访问远程缓存。
    oa414
        21
    oa414  
       Mar 9, 2017
    @markfang 直接把榜单的字段存 Redis ,然后取 TOP N 就行了。

    如果一定要用 MySQL ,榜单字段建索引,应用层做合适的缓存,瞬时 100 W 个用户查看的榜单不会有多大变化。
    phrack
        22
    phrack  
       Mar 9, 2017 via Android
    啥公司这么吊啊,日活上亿?
    markfang
        23
    markfang  
    OP
       Mar 9, 2017
    @phrack 某大厂
    qq496844026
        24
    qq496844026  
       Mar 9, 2017
    问这个问题真没意义,就算你回答用缓存或者优化 sql 之类的,然后他又会问缓存挂了怎么办,曾几何时我也被这个问题坑过....
    redtea
        25
    redtea  
       Mar 9, 2017
    数据从 Mysql 查询后静态化生成 html ,多搭几台 nginx 负载均衡, Redis 之类的缓存都不用使用。
    owt5008137
        26
    owt5008137  
       Mar 9, 2017
    分库分表->缓存->CDN 。就酱
    百度得 QPS 才 50W 。什么 NB 业务会 100W 同时请求?
    lhbc
        27
    lhbc  
       Mar 9, 2017 via iPhone
    动不动就百万千万亿并发……
    现在没个几亿并发都不敢说是干互联网的。
    swulling
        28
    swulling  
       Mar 9, 2017
    @lhbc 问题是就算是百度首页,每秒的 pv 也就是千万级,顶多上亿

    要是页面的平均响应时间只有 100ms 的话,也就百万并发啊
    lhbc
        29
    lhbc  
       Mar 9, 2017 via iPhone
    @swulling 可惜百度的日 PV 不到 5 亿,哪来每秒 PV 千万级
    http://alexa.chinaz.com/www.baidu.com
    swulling
        30
    swulling  
       Mar 9, 2017 via iPhone
    @lhbc pv 写错了,应该是流量。每一个 js css 请求都是一次流量,差不多吧,
    swulling
        31
    swulling  
       Mar 9, 2017 via iPhone
    @lhbc 另外 pv 早不止五亿了……
    paranoiagu
        32
    paranoiagu  
       Mar 9, 2017 via Android
    不同意说面试官傻的。其实问题提出来,并不一定有标准答案,或者问题本身有可能有问题,这个时候就应该和面试官进一步讨论,分析。也许面试官考的就是大家都分析问题能力。
    paranoiagu
        33
    paranoiagu  
       Mar 9, 2017 via Android
    大家要这么想,如果提这个问题的是客户。那我们怎么出解决方案呢?一定也是要进一步讨论明确后才能出方案。
    wangdu2012
        34
    wangdu2012  
       Mar 9, 2017 via iPhone
    @markfang 说的是你。明显人家不会问这么没有条件以及上下文的问题
    pathbox
        35
    pathbox  
       Mar 9, 2017 via Android
    也许面试官给了你一个吹水的机会,而你 fuck it 了
    lhbc
        36
    lhbc  
       Mar 9, 2017 via iPhone
    @swulling 静态是 CDN 的事,都在各个地区的 CDN 节点的内存里呢,而且,浏览器也会缓存这些静态文件相当长的时间。跟搜索引擎一点关系都没。
    超过五亿那也没有量级的差距。
    sorkl
        37
    sorkl  
       Mar 9, 2017 via iPhone
    @paranoiagu 支持,有问题拿出来分析清楚。
    觉得应该积极的去面对问题,当然有时候也可能故意抛一个 SB 问题看你的反应,这很正常嘛……
    frankzeng
        38
    frankzeng  
       Mar 9, 2017
    异步处理嘛,先把榜单生成为静态文件,定时更新就可以了。
    RobertYang
        39
    RobertYang  
       Mar 9, 2017 via Android
    大胸弟,送分题啊,反正都是吹水 2333
    jybox
        40
    jybox  
       Mar 9, 2017
    「瞬间有 100 万用户去看数据」不等于 100 万的并发,如果这些用户集中在 1 分钟内请求,那么 QPS 也只有 1.7 万而已;如果真的是 100 万的并发,按照一个请求 20 毫秒的处理时间,就是 500 万的 QPS 。
    wdlth
        41
    wdlth  
       Mar 9, 2017
    史上最大电商网站 12306 峰值并发量才有几十万 TPS ……
    面试官是看斗鱼在线数看多了吧。
    nanpuyue
        42
    nanpuyue  
       Mar 9, 2017
    首先,要确定这是不是个伪需求。
    snnn
        43
    snnn  
       Mar 9, 2017 via Android
    百万同时在线一点都不多。。。我就抗过每秒 500 万次请求。
    janxin
        44
    janxin  
       Mar 9, 2017
    变化不大,静态页面,搞定 XD
    vultr
        45
    vultr  
       Mar 9, 2017
    给我 200 台服务器,差不多可以抗住百万并发。
    cokyhe
        46
    cokyhe  
       Mar 10, 2017
    用户榜单,几分钟读一次数据库,生成静态页面不就行了吗,还 tmd 的 100 万并发
    torbrowserbridge
        47
    torbrowserbridge  
       Mar 10, 2017 via iPhone
    某大厂,干这事儿就是事先生成 js 数据文件
    Jakesoft
        48
    Jakesoft  
       Mar 10, 2017 via iPhone
    这种高并发请求就不该让 mysql 来扛
    killerv
        49
    killerv  
       Mar 10, 2017
    我觉得应该问如何应对百万并发,而不是问 MySQL 去扛这百万并发。
    ivvei
        50
    ivvei  
       Mar 10, 2017
    看榜单为什么要都访问数据库…… 数据库把榜单生成后就给一个页面让人看好了啊,要扛访问量的是 web 服务器。
    jianzhiyao020
        51
    jianzhiyao020  
       Mar 10, 2017
    瞬间的话可以这样子的,用 memory 引擎,分表分库,定期维护缓存
    thai9quohs6jae1C
        52
    thai9quohs6jae1C  
       Mar 10, 2017 via Android
    其实现在有的招聘人员,特别是自以为很懂的企业自己圈养的 hr 智商是越来越低,问的问题只是想说明他会什么,这种公司往往是不想招你去面试的这个职位,很多职位是虚拟出来的,因为 hr 也不想失业嘛,也有 KPI 。
    notreami
        53
    notreami  
       Mar 10, 2017
    榜单而已,所有数据全上 CDN , N 久变动一次的数据,考虑啥 mysql 、 redis 、 nginx ,要考虑的是 DNS 域名解析。 C1000K ,上 F5 估计没啥问题,不过这个估计也就一瞬间的事,找个第三方公司,世纪互联啥的,租用一会也就完事了。
    JerryZhang
        54
    JerryZhang  
       Mar 10, 2017
    加缓存就好。
    stormpeach
        55
    stormpeach  
       Mar 10, 2017
    mysql 扛百万并发? redis 还差不多
    skyblue
        56
    skyblue  
       Mar 13, 2017
    我觉得吧, 这个问题还是很有意义的.
    1. 对高并发的概念
    2. 对 mysql 的概念
    3. 对预设考题的理解, 对业务隐含问题的挖掘能力
    4. (我圆不下去了....
    About     Help     Advertise     Blog     API     FAQ     Solana     3196 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 211ms UTC 14:37 PVG 22:37 LAX 07:37 JFK 10:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86