V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zeroJason
V2EX  ›  程序员

并发解决一秒钟五十万的并发网站

  •  
  •   zeroJason · 2016-08-09 12:15:52 +08:00 · 25364 次点击
    这是一个创建于 3007 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一秒钟五十万的并发网站,如何从服务器,缓存,数据库,前端进行优化?
    纯粹的问题,求指教
    104 条回复    2016-08-10 23:24:12 +08:00
    1  2  
    Reign
        1
    Reign  
       2016-08-09 12:17:44 +08:00
    晒网址,大家才好从前端方面入手给你优化
    zeroJason
        2
    zeroJason  
    OP
       2016-08-09 12:19:18 +08:00
    @Reign 没,这就是个问题。别人问我,解决不了才提问的。
    notgod
        3
    notgod  
       2016-08-09 12:20:36 +08:00 via iPhone   ❤️ 1
    这样问没用
    连你什么站都不知道 静态多还是动态多
    读多写多 什么业务逻辑 可接受的预算方案
    什么都靠别人猜吗 ........
    sujin190
        4
    sujin190  
       2016-08-09 12:20:46 +08:00
    秒杀?每秒五十万,每天数百亿?这么牛逼恐怕不是简简单单优化就能搞的定的吧
    zeroJason
        5
    zeroJason  
    OP
       2016-08-09 12:21:27 +08:00
    @notgod 哦哦,好的,那我撤回问题,等了解清楚再来哈
    @sujin190
    谢谢(*^__^*) 嘻嘻……
    zeroJason
        6
    zeroJason  
    OP
       2016-08-09 12:21:58 +08:00
    貌似删不了了= =
    pi1ot
        7
    pi1ot  
       2016-08-09 12:22:15 +08:00
    五十万什么?输出五十万次 hello world 的话不需要任何优化
    just4test
        8
    just4test  
       2016-08-09 12:22:30 +08:00
    如果是秒杀,有一大堆的方法让 50w 请求打到后端上只剩 50 。
    如果是长时间高峰 50w ,那你们得多有钱,何必跑 v2 问。
    microchang
        9
    microchang  
       2016-08-09 12:22:45 +08:00 via Android
    @zeroJason v 站发帖没法删除,谨慎哟~
    zeroJason
        10
    zeroJason  
    OP
       2016-08-09 12:24:10 +08:00
    @just4test 没,就别人问我个 问题。小菜鸟不大会,又想学习。所以过来请教一下。

    @microchang 恩恩,谢谢(⊙v⊙)
    wy315700
        11
    wy315700  
       2016-08-09 12:28:02 +08:00
    我猜是个面试题
    zeroJason
        12
    zeroJason  
    OP
       2016-08-09 12:28:34 +08:00
    @wy315700 哈哈,不是面试题。就看了别人的这个问题,感兴趣。
    slixurd
        13
    slixurd  
       2016-08-09 12:29:38 +08:00   ❤️ 1
    显然一看就是新手吧
    QPS 和并发本来就是不一样的概念
    一秒钟 50w 并发我都不知道是个啥
    50w 并发,这个系统怎么也得有个 500wQPS 吧
    jy01264313
        14
    jy01264313  
       2016-08-09 12:30:45 +08:00
    百度搜索页面 QPS 大概是 30w
    won
        15
    won  
       2016-08-09 12:34:13 +08:00 via Android
    最简单的联系,把防火墙都摘掉
    em70
        16
    em70  
       2016-08-09 12:34:42 +08:00
    世界上有这么大流量的网站?
    wander2008
        17
    wander2008  
       2016-08-09 12:35:49 +08:00 via iPhone
    至少要花 300w 招人吧。这么大的并发。不知道, pokeman 有没有!!
    zeroJason
        18
    zeroJason  
    OP
       2016-08-09 12:36:28 +08:00
    懵逼了。原来这么深奥
    changshu
        19
    changshu  
       2016-08-09 12:40:41 +08:00   ❤️ 1
    twitter 上市那年大概是十几万每秒吧.....
    wander2008
        20
    wander2008  
       2016-08-09 12:42:58 +08:00 via iPhone
    地球上有哪个应用网站招这么大并发,求围观。
    zeroJason
        21
    zeroJason  
    OP
       2016-08-09 12:56:06 +08:00
    刚那人给我发了一下详细的需求,看了一眼,,,又懵逼了。。
    大致是这样的
    1 ,公司网站是一个 秒访问量在 50W 你觉得我在吹牛 其实没有。情况属实。

    公司困境 公司有 50W 个客户 (可以理解成一台电脑)每个电脑需要在 5 秒内 访问一次公司网站,公司页面不需要用户操作,任务由客户 Duan 每时每客在读
    公司的一个页面 ,这个页面会获取数据库内容返回给客户 Duan 。

    虽然在每 5 秒访问一个,可是如果 50W 个用户有几率在同时一秒访问 可能在 10W 左右 那么服务器数据库就瘫痪

    2 ,程序员可部署 站群服务器 客户 Duan 这个难题,如果当您看到 请你帮帮我,公司每天都在亏钱,

    3.本公司 为正规注册广告公司,业务不仔细详说,以上信息真实,不是吹牛没必要,


    精易网站有几个帮过没能解决 在此表示感谢。


    补充内容 (2016-8-9 10:42):
    本人前期实验 1 号服务器装 网站 2 号服务器装数据库 1-2 号服务器内网 PHP 内容的连接数据库 读取数据库 写入数据库 PHP 没有任何处理

    补充内容 (2016-8-9 10:43):
    硬件 32G 8H 200M 2 号服务器在 2000 时基本 CPU 百分百 死掉的
    zeroJason
        22
    zeroJason  
    OP
       2016-08-09 12:56:50 +08:00
    求大神,不要补刀。。求解释,楼主对此一片空白
    tomczhen
        23
    tomczhen  
       2016-08-09 12:59:47 +08:00
    苦逼半路出家野生运维一名,之前后端开发问我“大访问量网站”架构的问题,我问他“访问量多大”,他说“大概每秒上百万吧”。

    然后我心里默念了一句 MDZZ

    括弧逃
    9hills
        24
    9hills  
       2016-08-09 12:59:53 +08:00
    如果是动态请求, Google Search 的 QPS 比这多些,但是并发比不上, QPS 除以 10 差不多是并发。

    也就是说,你的网站相当于好几个 Google Search 。。上面说几百万招人的,呵呵哒
    zeroJason
        25
    zeroJason  
    OP
       2016-08-09 13:00:33 +08:00
    (⊙o⊙)…
    tboy
        26
    tboy  
       2016-08-09 13:04:10 +08:00
    @zeroJason 怎么高并发 还读数据库 怎么的也要用 nosql 啊 读内存数据库 硬盘是 ssd 啊
    tomczhen
        27
    tomczhen  
       2016-08-09 13:07:35 +08:00
    看业务描述估计是统计类的业务,不过也可能是做成“开关”业务的控制。
    一般来说都是上 kvdb ,后端用 openresty 实现这种访问量大、响应要求高的简单业务。当然,各种负载均衡、分布肯定是要做的。
    zeroJason
        28
    zeroJason  
    OP
       2016-08-09 13:08:40 +08:00
    @tboy 话说这个老板好像真的很着急的样子,问我个菜鸟也是走投无路了吧,应该是不知道怎么办了,如果真的有大神知道解决办法的话,还请帮忙。真的。求大神指点
    aabbccli
        29
    aabbccli  
       2016-08-09 13:08:46 +08:00
    估计是广告联盟公司的实时报价系统(RTB)
    strwei
        30
    strwei  
       2016-08-09 13:09:04 +08:00
    坐等 Alibaba 攻城狮解答
    denghongcai
        31
    denghongcai  
       2016-08-09 13:10:03 +08:00
    不如直接把原始需求来源发出来,有合理报酬自然有人帮忙
    vus520
        32
    vus520  
       2016-08-09 13:10:37 +08:00
    某司 2000 QPS 的业务,目前市值 80 亿
    zeroJason
        33
    zeroJason  
    OP
       2016-08-09 13:10:57 +08:00
    我刚发的那一堆是需求,那个老板的预算是 3w-5w,如果能有人解决的话,可以留言,我发联系方式过去
    tomczhen
        34
    tomczhen  
       2016-08-09 13:11:02 +08:00
    @zeroJason 问题是即便你在这里问到了方案,但是具体实施起来还是要看人的。就像现在随便一个物理学博士知识都能造原子弹一样——真正能造出来还是要看很多条件的。
    zeroJason
        35
    zeroJason  
    OP
       2016-08-09 13:13:23 +08:00
    @tomczhen 恩恩,有大神的可以解决的话,可以留下方式,我发过去联系方式,那个人的预算是 3w-5w 。也不太懂,就能帮他那么多了
    nilai
        36
    nilai  
       2016-08-09 13:16:12 +08:00
    估计应该是金融类的产品吧。
    zeroJason
        37
    zeroJason  
    OP
       2016-08-09 13:16:37 +08:00
    @nilai 是广告类的
    9hills
        38
    9hills  
       2016-08-09 13:18:46 +08:00
    哪怕是只返回静态的 hello world 。 50w 并发(注意是并发不是 QPS )也不是一般人能做出来的
    bk201
        39
    bk201  
       2016-08-09 13:24:20 +08:00
    这个不如花钱请阿里的顾问去你们那儿实际看看。
    cevincheung
        40
    cevincheung  
       2016-08-09 13:30:19 +08:00
    从最基础的解决方案来呗。
    cevincheung
        41
    cevincheung  
       2016-08-09 13:30:59 +08:00
    po 主不妨留个邮箱,谁有方案可以跟你提。重赏之下必有勇夫。
    sujin190
        42
    sujin190  
       2016-08-09 13:32:19 +08:00
    @zeroJason 看需求像是实时统计展示之类的,如果是这样的话 50w 个长连接推送更靠谱吧, 5 秒发 50 万推送还是很简单的,每秒处理 50 万请求就有点太不靠谱了,而且可以数据不变更不推送,这样推送次数明显变少了吧,再者如果数据是类线性变化的话,还可以客户端计时自己加,然后服务端没过一段时间推送正确值修正就可以了,这样推送量有变低了
    grayon
        43
    grayon  
       2016-08-09 13:33:13 +08:00
    前段加随机延时错峰,后端数据库用内存数据库,硬盘 IO 耗时高
    用 C 写服务端 socket 处理 http 请求
    soli
        44
    soli  
       2016-08-09 13:34:32 +08:00
    做成可横向扩展的,然后上 50 台机器抗。

    任何偏工程性的技术问题都是钱的问题。
    lecher
        45
    lecher  
       2016-08-09 13:36:42 +08:00
    这种如果 50w 客户端的请求内容没有用户状态,不同用户请求同样参数的返回值一致,数据只有添加没有失效,客户端不提交更新数据,缓存可破。就走 cdn 的分发流程,直接多布几台机器分担负载。
    zhchyu999
        46
    zhchyu999  
       2016-08-09 13:40:56 +08:00
    如果是拉取更新的数据,可以用推的方式,如果没有更新就不推,这样服务器负载就下来了
    realpg
        47
    realpg  
       2016-08-09 13:41:37 +08:00
    前些天做过一次类似的项目,不过我只出运维和生产环境架构设计
    不过三五万预算,买个思路差不多,买全套实现有点太扯了
    wander2008
        48
    wander2008  
       2016-08-09 13:41:43 +08:00 via iPhone
    @9hills 几百万招一个人…不是一群人。😄
    wander2008
        49
    wander2008  
       2016-08-09 13:44:38 +08:00 via iPhone
    不知道 12306 有没有这样大的并发。在春节期间
    wander2008
        50
    wander2008  
       2016-08-09 13:45:17 +08:00 via iPhone
    gfw 也可能有这么大的并发要求?
    ranran
        51
    ranran  
       2016-08-09 13:47:04 +08:00   ❤️ 1
    奇怪,你说只是帮别人提问,需求都转过来了,联系方式反而不转过来,几个意思?既然如此,我来转过来吧。联系方式没抹掉就在其中。

    《并发处理-钱能解决不叫事_精易论坛》
    http://bbs.125.la/thread-13925175-1-1.html

    以下全部为原文内容:

    1 ,公司网站是一个 秒访问量在 50W 你觉得我在吹牛 其实没有。情况属实。

    公司困境 公司有 50W 个客户 (可以理解成一台电脑)每个电脑需要在 5 秒内 访问一次公司网站,公司页面不需要用户操作,任务由客户 Duan 每时每客在读
    公司的一个页面 ,这个页面会获取数据库内容返回给客户 Duan 。

    虽然在每 5 秒访问一个,可是如果 50W 个用户有几率在同时一秒访问 可能在 10W 左右 那么服务器数据库就瘫痪

    2 ,程序员可部署 站群服务器 客户 Duan 这个难题,如果当您看到 请你帮帮我,公司每天都在亏钱,

    3.本公司 为正规注册广告公司,业务不仔细详说,以上信息真实,不是吹牛没必要,

    联系电话 18778338069 QQ : 67205899 1244067411

    精易网站有几个帮过没能解决 在此表示感谢。


    补充内容 (2016-8-9 10:42):
    本人前期实验 1 号服务器装 网站 2 号服务器装数据库 1-2 号服务器内网 PHP 内容的连接数据库 读取数据库 写入数据库 PHP 没有任何处理

    补充内容 (2016-8-9 10:43):
    硬件 32G 8H 200M 2 号服务器在 2000 时基本 CPU 百分百 死掉的
    SlipStupig
        52
    SlipStupig  
       2016-08-09 13:56:10 +08:00
    先去买一条专线,最少需要 50G 带宽,其它再说
    ericls
        53
    ericls  
       2016-08-09 14:08:03 +08:00 via iPhone
    我有办法实现
    bigapple111
        54
    bigapple111  
       2016-08-09 14:16:37 +08:00
    @sujin190 赞同,
    1.从减少每次请求创建连接的资源消耗开始着手
    2.优化任务处理模型,尽量不要占用 IO 的资源
    3.系统内部分布式处理,网络接入层只负责保持用户连接,具体业务丢该下层服务处理
    4.不死才有战斗力
    bigpigeon
        55
    bigpigeon  
       2016-08-09 14:20:20 +08:00
    DNS 负载均衡->nginx 的 upstream->数据库读写分离->数据库集群->业务逻辑分离
    可以按这个思路优化
    goodryb
        56
    goodryb  
       2016-08-09 14:31:46 +08:00
    硬件方面,首先带宽得够,然后负载均衡得有,业务服务器部署多台,数据库前面加缓存,然后是 CDN 缓存大法
    软件方面可以看看 54 楼的建议

    参考原帖里面的建议,找个云服务商来解决这个问题。
    ykrl089
        57
    ykrl089  
       2016-08-09 14:34:49 +08:00
    @pi1ot 并发 50w hello world 都不是那么容易的
    TangMonk
        58
    TangMonk  
       2016-08-09 14:37:46 +08:00
    openresty 即可
    zeroJason
        59
    zeroJason  
    OP
       2016-08-09 14:41:19 +08:00
    发的太勤了。。被暂停回复了。。那人的企鹅 12440+67411 , 那个人的联系方式,应该是不懂部署负载均衡什么的,问题也应该没有我发的那么严重,原谅小菜鸟不是很懂这块乱提问。有大神愿意解决这个问题,可以去联系联系他,看着那人应该是非常着急了,只能帮到这了。
    @ranran 没发联系方式,是觉得不礼貌,之后征求同意了想发,结果不能发了,感谢您帮忙发出来。

    非常感谢各位大神的帮助。有愿意帮助他的,请联系他的 qq 。
    weisdong
        60
    weisdong  
       2016-08-09 14:42:23 +08:00
    看到以上各位说的,我想起来一个段子:一滴水重的物体从 5000 米高空落下会对人造成什么伤害? 其实可以换个角度考虑下,这个老板的预算就 3-5 万,各位觉得会真有那么大并发? 我严重怀疑老板把并发的意思理解错了,真就应了那句话:认真你就输了。
    just13
        61
    just13  
       2016-08-09 14:50:14 +08:00 via iPhone
    有推云主机的也是醉了, 任何云主机的 load balanace 方案能帮摆平 5 千到 2 万并发已经得看业务复杂程度了, twitter 、 instagram 做大了一样得从 AWS 撤, 50w 并发的静态输出都能跑死几个机柜的网卡了
    jasontse
        62
    jasontse  
       2016-08-09 14:55:12 +08:00 via iPad
    你做的是高频交易吗
    firefox12
        63
    firefox12  
       2016-08-09 14:57:59 +08:00
    你想想已经有 50 万在线客户的业务,怎么可能突然重新起炉灶 然后一台主机搞定?

    参照一下 现有的服务器数目 负载 流量, 大概的情况就知道了。 这种标题真是浪费大家的时间。
    keller
        64
    keller  
       2016-08-09 15:04:17 +08:00
    1.降低每秒并发请求,将客户端数据缓存延时提交
    2.如果服务端要下发命令或者要更新客户端数据 可以用 socket 长链接下发命令。
    3.静态资源全部扔到 cdn 。
    subpo
        65
    subpo  
       2016-08-09 15:12:32 +08:00
    几百万够招人?几亿差不多吧...
    j4fun
        66
    j4fun  
       2016-08-09 15:34:44 +08:00
    看了下回复的需求, 50W 客户 5 秒访问一次。。。算下来 CPS 也就 10W 吧,而且也没说要马上回应,可以做一下流控,比如平均 0.5s 回复一个,那么 CPS 也就差不多 5W 了。 QPS 也就 2 、 3 十万。这并不难= =
    msg7086
        67
    msg7086  
       2016-08-09 15:40:33 +08:00 via Android
    预算先加两个零我们再讨论实现?
    ret2where
        68
    ret2where  
       2016-08-09 16:00:50 +08:00
    mariotcp mariotcp 长连接
    hoythan
        69
    hoythan  
       2016-08-09 16:01:09 +08:00
    @pi1ot 我表示输出 50 万次 hello world 真的需要优化...比如滚屏加载 超过删除 占位等等...不然用户吃不消
    ovear
        70
    ovear  
       2016-08-09 16:02:09 +08:00
    :doge: 好奇,尝试联系了下。。
    然后就是
    公司副总 - 3 把手 - 直接切入正题 - 多少 RMB 解决
    ovear
        71
    ovear  
       2016-08-09 16:03:14 +08:00   ❤️ 1
    @ovear 擦 没写完就发出去了。。
    然后就迷之不理人。。想尝试的谨慎,搜一下那两个 qq ,有惊喜。。
    erevus
        72
    erevus  
       2016-08-09 16:04:58 +08:00
    如果用户只是去读取的话那简单,后端每隔 5 秒生成一个 html 发到 cdn 上。
    shiny
        73
    shiny  
       2016-08-09 16:06:21 +08:00
    看业务类型啊!!
    wy315700
        74
    wy315700  
       2016-08-09 16:23:13 +08:00
    假设是 50 万 QPS ,一条请求 1KB(因为是网页, 1KB 肯定有吧)

    那一秒就是 500MB

    也就是 4Gbps ,先不管网卡

    然后按照当前云服务的价格,按照 100/Mbps/月算, 4Gbps 一个月的价格差不多是 40 万
    50vip
        75
    50vip  
       2016-08-09 16:25:29 +08:00
    可以去导流去做 ddos ,赚钱老多了~
    lovedboy
        76
    lovedboy  
       2016-08-09 16:26:17 +08:00   ❤️ 1
    我就简单算一下流量哈:

    50 万并发,算每个请求响应是 100ms 吧, 1s 就是响应 500W 次。
    假如 1 次请求数据大小的 1KB 吧,这个对于网页来说很小很小了吧...也就是 500WKB ,也就是 5 个 G 。

    换算成带宽也就 50 个 Gb 吧。
    lesliefree
        77
    lesliefree  
       2016-08-09 16:27:15 +08:00
    感觉无解,老板觉得花钱就行了,没钱买机器, fenng 说过技术问题长期被低估短期被高估
    lesliefree
        78
    lesliefree  
       2016-08-09 16:34:31 +08:00
    @ovear 搜了世界真奇妙
    Quaintjade
        79
    Quaintjade  
       2016-08-09 16:37:12 +08:00
    @ovear 搜 QQ 号结果果然很亮……
    v2exhehehehe
        80
    v2exhehehehe  
       2016-08-09 17:11:42 +08:00
    易语言和外 G ,这个牛
    Penton
        81
    Penton  
       2016-08-09 17:17:54 +08:00
    家美装饰有限公司 ????????
    Penton
        82
    Penton  
       2016-08-09 17:19:24 +08:00
    glogo
        83
    glogo  
       2016-08-09 17:23:38 +08:00
    QPS 50w 的站,有点厉害
    walkman660
        84
    walkman660  
       2016-08-09 17:24:39 +08:00
    3w-5w 的预算解决这样的 50W 并发。。。
    搭车同求
    ykrl089
        85
    ykrl089  
       2016-08-09 17:42:14 +08:00
    @ranran 一台服务器肯定死, 就是小型机估计都得死。考虑下改构架吧。
    sopato
        86
    sopato  
       2016-08-09 17:52:32 +08:00
    搜了 QQ 什么的,好犀利哈哈。
    mymike
        87
    mymike  
       2016-08-09 17:54:19 +08:00
    需求有点扯,然而 push 最容易搞定了
    icegreen
        88
    icegreen  
       2016-08-09 18:40:57 +08:00
    和我之前项目挺像, 浏览器五秒刷新一次股票行情;
    jhaohai
        89
    jhaohai  
       2016-08-09 18:47:41 +08:00
    学学小米,直接在前端解决并发问题, 99%直接返回 loading 的动图, 1%做真正的处理
    imyip
        90
    imyip  
       2016-08-09 19:55:03 +08:00 via Android
    亲身经历 活动站需求方预计 10 万并发 最后当日访问量不足 1 万
    Canrz
        91
    Canrz  
       2016-08-09 20:12:06 +08:00
    @imyip 哈哈,这就尴尬大发了
    alexapollo
        92
    alexapollo  
       2016-08-09 20:14:45 +08:00
    典型不动架构就设计啊。。
    ipconfiger
        93
    ipconfiger  
       2016-08-09 20:25:59 +08:00
    我就是想知道楼举是真有这么大流量的需求还是就是纯粹来消遣大家的
    wayslog
        94
    wayslog  
       2016-08-09 20:39:08 +08:00 via Android
    @zeroJason 这个需求……用个队列不就解决了么……
    qhxin
        95
    qhxin  
       2016-08-09 20:39:27 +08:00
    “一秒钟五十万的并发”

    你们那儿并发是按秒算的?
    flynaj
        96
    flynaj  
       2016-08-09 21:40:38 +08:00
    分流一下就好了,先买 100 台服务器。分散过去就行。
    zhx1991
        97
    zhx1991  
       2016-08-09 22:09:19 +08:00
    至少有个场景吧

    访问数据库还是缓存

    本地还是远程调用

    啥也没有...

    另外讲一句 500K 的 qps 是很大的
    ovear
        98
    ovear  
       2016-08-09 22:35:53 +08:00
    @lesliefree
    @Quaintjade
    现在 qq 签名已经变成了
    本人公司副总 - 公司 3 把手 - 不懂技术 - 提供站群服务器 - 解决 50W 并发,你没有看到错.
    看来已经"解决"了 →_→
    manhere
        99
    manhere  
       2016-08-09 22:40:45 +08:00
    manhere
        100
    manhere  
       2016-08-09 22:44:50 +08:00
    原来 19 楼是采集贴,原帖天涯,有照片。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2838 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:32 · PVG 21:32 · LAX 06:32 · JFK 09:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.