V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Loyalsoldier
V2EX  ›  问与答

一个网站,需要多少 CPU、RAM、带宽,是怎么算出来的?能承受的最大并发数又是怎么算的?

  •  
  •   Loyalsoldier · 2016-10-26 19:30:52 +08:00 · 5614 次点击
    这是一个创建于 2747 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。

    本人使用阿里云的最低配置的 1 核 CPU 、 1G RAM 、 1M 带宽,请问对于一个 PHP 应用而言,能同时承受的最大并发数大概是多少?是怎么算?

    第 1 条附言  ·  2016-10-27 11:43:30 +08:00

    附加两个条件:

    1. 假设是最简单的 PHP 商城,手机端(LNMP,不用 Redis、MemCache),主战场是微信,最多 1W 用户,日活 500 人。能简单估算一下需要的服务器配置?
    2. 有没有必要用 Docker 做分布式集群?多少用户适合做集群?

    最好能给个大概的估算。另外,服务器怎么做压力测试?小白一个,莫见笑

    22 条回复    2016-11-01 10:59:19 +08:00
    IJustmaogepao
        1
    IJustmaogepao  
       2016-10-26 19:40:51 +08:00
    先 mark 下,,不过我觉得这应该和代码质量以及算法也有很大的关系。。看看有没有大神回答
    chenset
        2
    chenset  
       2016-10-26 20:31:59 +08:00
    没有直接的算法,主要还是看是什么样的应用, 只能自己 ab 一下. 看这个配置, 带宽会最先成为瓶颈.
    shoaly
        3
    shoaly  
       2016-10-26 20:40:09 +08:00
    根据 啥时候卡了 才知道
    lhx2008
        4
    lhx2008  
       2016-10-26 20:43:03 +08:00
    楼上正解,因为不同程序执行效率不一样,并且还有优化的空间,像 memcache 和静态缓存、 CDN 等,保守估计, 1GRAM 普通程序 1W IP 没什么问题
    em70
        5
    em70  
       2016-10-26 20:43:03 +08:00 via iPhone   ❤️ 1
    不是算出来的,而且运营中不断调整的,初期你的量很小,就最基本配置即可,发现负载过高就升级,千万不要有一步到位的想法。

    还有,大多数失败的互联网项目都是因为在只有 100 用户的时候考虑 1 亿用户的情况而死掉的,切记
    huigeer
        6
    huigeer  
       2016-10-26 21:03:06 +08:00 via Android
    80%的 pv 访问量发生于 20%的时间,以百万每天的 pv 访问量计算,吞吐量大约为 46
    xspoco
        7
    xspoco  
       2016-10-26 21:11:11 +08:00
    1M 才 100KB/s+ 左右 感觉好小。。
    Binarization
        8
    Binarization  
       2016-10-26 21:16:19 +08:00 via Android
    @xspoco 服务器带宽 1M 就是 1M/s 吧
    fo2w
        9
    fo2w  
       2016-10-26 21:18:39 +08:00
    @Binarization 很遗憾...
    yilin101
        10
    yilin101  
       2016-10-26 21:24:03 +08:00
    @Binarization 不是,
    xspoco
        11
    xspoco  
       2016-10-26 21:28:12 +08:00
    lecher
        12
    lecher  
       2016-10-26 21:32:10 +08:00 via Android   ❤️ 1
    首先跑起来做个压力测试。
    看每秒 qps ,可以测出来业务的处理能力,每秒能处理几个。
    看请求返回的耗时,可以算出来用户的平均等待时间。

    监控实际压力测试时候的服务器负载。可以看到在什么阶段的并发请求会占满服务器的资源,是带宽先跑完,还是内存,或者 CPU 。可以进一步分析这个业务是消耗什么资源的。

    最后再根据不同业务的资源消耗情况,和不同业务的实际请求比率计算需要扩容的资源。

    实际跑的时候,监控服务器负载,服务器负载爆了什么就想办法扩容什么。
    daya
        13
    daya  
       2016-10-26 21:32:27 +08:00 via Android
    @Binarization 请注意单位
    akira
        14
    akira  
       2016-10-26 21:34:32 +08:00
    1M 带宽的时候,瓶颈一般都是在带宽了,简单估算就是 带宽 /页面大小
    假设页面大小是 1M ,那么每秒并发就是 1/8 个

    静态资源丢 oss 会大幅度减少对带宽的需求。
    billlee
        15
    billlee  
       2016-10-26 23:19:59 +08:00
    这个不是算出来的,而是做压力测试测出来的
    简单的应用还能估计,应用越复杂,瓶颈越可能出现在你想不到的地方
    hack
        16
    hack  
       2016-10-27 08:04:05 +08:00 via Android
    测试环境性能测试算出来了 服务器性能应满足未来一段时间的业务量
    Loyalsoldier
        17
    Loyalsoldier  
    OP
       2016-10-31 18:07:34 +08:00
    @chenset
    @lhx2008
    @em70
    @huigeer
    @lecher
    @akira
    @billlee
    @hack

    附加两个条件:

    1. 假设是最简单的 PHP 商城,手机端( LNMP ,不用 Redis 、 MemCache ),主战场是微信,最多 1W 用户,日活 500 人。能简单估算一下需要的服务器配置?
    2. 有没有必要用 Docker 做分布式集群?多少用户适合做集群?

    最好能给个大概的估算。另外,服务器怎么做压力测试?
    em70
        18
    em70  
       2016-10-31 19:31:20 +08:00 via iPhone
    @Loyalsoldier 这个量太小了,而且实际量可能比你估计还要小,阿里云最便宜的 ECS+5M 带宽+最便宜的 RDS 就行了,如果感觉卡了,动态升级下配置, 5 分钟后生效就行了,有什么可纠结的
    em70
        19
    em70  
       2016-10-31 19:35:52 +08:00 via iPhone
    @Loyalsoldier 等阿里云最高级的 RDS 都满足不了你的业务,你这个东西价值至少过亿了,大把的投资会主动找上门,到时开 100 万年薪请大牛给你做构架,集群不集群,那是你该关心的事吗

    第二次重复给你这个提醒:大多数互联网项目失败都是因为只有 100 用户的时候考虑一亿用户的事死掉的
    akira
        20
    akira  
       2016-10-31 20:47:44 +08:00
    @Loyalsoldier 这样的规模 最低配的 rds+最低配的 ecs+5M 带宽完全足够折腾了
    hack
        21
    hack  
       2016-11-01 10:58:43 +08:00
    最低配即可,如果只是 php ,买一百多的阿里云空间就行了
    hack
        22
    hack  
       2016-11-01 10:59:19 +08:00
    年付一百多,足够
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   956 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:38 · PVG 07:38 · LAX 16:38 · JFK 19:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.