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

今天听了一个所谓的架构师的言论,颠覆了我的三观

  •  
  •   sunmonster · 2016-10-14 20:09:49 +08:00 · 8965 次点击
    这是一个创建于 2990 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是做 php 开发的,同时也会做一些运维,前端,数据库方面的工作,对这些也算有些基本的了解。今天跟那个架构师讨论了一些关于架构的一些问题,他说的话跟我自己所总结出来的完全相反,而且我也不是很认同他,主要有以下几点:

    1. 关于基本的 lemp 架构优化,我说 nginx , PHP 已经很快了,对于一个应用,它在发展的过程中首先出现的瓶颈是 DB ,所以要做读写分离。他说我是错的, php 的并发量是很低的,他说他做过测试, Laravel 只输出 hello world 的并发量才每秒 86 ,我不信,他说很多人都不信,但是我们做过测试,你有做过测试吗?我确实没做过,但是以我的经验来说不会这么底,他说 CI 也就 300 的并发量,所以做高并发的网站 laravel 框架是不行的。

    2. 因为他们用的服务器内存是 16G ,我问他你们 fpm 进程开了多少?他说不知道,我说 16G 大内存 fpm 坑定要设置成静态的,按照 50 ~ 100M 分配一个 fpm 进程,预留一些系统内存开销,很容易估算出大致进程数。他说他们是设置成动态的,进程数是一直在变的,所以不知道。

    很多时候我想发表一些想法,他马上打断我说这是不行的,我说我还没说想怎样呢,他说你不就是想这样这样吗?

    最后我向他要测试报告,他说这是公司内部信息,不方便提供,我也不好说啥。

    42 条回复    2017-06-30 10:37:11 +08:00
    cxbig
        1
    cxbig  
       2016-10-14 20:25:56 +08:00
    这年头满地"砖家”,拿不出事实基础的,不用太过在意。
    拿 Hello World 来做并发测试说明不了什么问题,不同的 Application 情况不一样。
    visonme
        2
    visonme  
       2016-10-14 20:27:37 +08:00
    听说动嘴皮的工资都比干实事的高
    pi1ot
        3
    pi1ot  
       2016-10-14 20:30:32 +08:00
    双方都是在自己划定的场景内无意义的空对空 PK 。
    likezun
        4
    likezun  
       2016-10-14 20:33:41 +08:00
    垃圾架构师~
    wd
        5
    wd  
       2016-10-14 20:34:42 +08:00 via iPhone
    对于 1 你有空发帖没空测试吗?
    sutra
        6
    sutra  
       2016-10-14 20:48:36 +08:00 via iPhone
    PHP 性能我不知道,但是有人说 PHP5 性能和 PHP7 比起来差得很多很多:

    看看别人说的,这结论就是 PHP5 性能差得多可怕。

    Badoo 将积累了 10 年的、超过 2 百万行的 PHP 代码升级到 PHP7 后(紧随 Etsy 之后,第二个大规模使用 PHP7 的公司), CPU/内存使用降了一半,少运行了一半的机器( 300 台),直接省下$100 万。


    https://wanqu.co/a/2948/2016-03-16-how-badoo-saved-one-million-dollars-switching-to-php7.html?s=social
    Midnight
        7
    Midnight  
       2016-10-14 20:50:13 +08:00
    用不同框架来做这种测试 真是咸的蛋疼啊。。。。
    Infernalzero
        8
    Infernalzero  
       2016-10-14 20:52:47 +08:00
    对于 web 应用,太过专注于应用本身的并发意义不大,因为这都可以通过加机器解决,最终的瓶颈就是在存储层
    sunmonster
        9
    sunmonster  
    OP
       2016-10-14 21:07:59 +08:00
    @pi1ot 请问这需要什么场景呢,他是强调 php 慢,并不是 php 有多快,测试 hello world 不能说明 php 有多块,但是如果 hello world 都很慢,难道增加业务量会很快?
    sunmonster
        10
    sunmonster  
    OP
       2016-10-14 21:11:07 +08:00
    @wd 如何测试?他说的测试环境配置,以及如何测试的我都不知道,有比较的意义?如果只是想证明 laravel 的并发量大于 86 ,我之前运营的都上 300 了,所以说我不信,最后还向他要测试报告,想搞清楚他是怎么测试的
    pi1ot
        11
    pi1ot  
       2016-10-14 21:21:11 +08:00
    @sunmonster 任何有意义的 profile 结果和对比都是在限定需求场景下实际运行测试得出的,你说做过测试,是什么硬件条件,什么测试方式,他说达不到,又是什么情况,从你的描述是看不出来的。
    wayslog
        12
    wayslog  
       2016-10-14 21:25:55 +08:00 via Android
    这…… php 的并发看来真的低啊……我用 Python 都能随意达到千……(当然抛弃场景谈 benchmark 是一件很扯淡的事儿……
    mcfog
        13
    mcfog  
       2016-10-14 21:34:42 +08:00 via Android
    先不说技术什么的,讨论的时候不断打断对方的人就别和他讨论了,不会有什么建设性的
    ovear
        14
    ovear  
       2016-10-14 21:48:36 +08:00   ❤️ 3
    https://www.90.cx/php-mode/

    贴一篇文章顺便 @hostker
    huigeer
        15
    huigeer  
       2016-10-14 23:11:24 +08:00 via iPhone
    解释性语言性能差很正常,满足需求就行。 laravel 开启 opcache 和啊开启,差好几倍,做过测试
    qieqie
        16
    qieqie  
       2016-10-14 23:33:58 +08:00
    跟语言无关, PHP 并发低的印象要怪主流的执行模式( pre-fork/cgi/fast-cgi..)都很低效,当然 laravel 这种一个 hello world 也要引用 20 , 30 个文件的框架也是压测杀手。
    纯 php 写的 socket server (不需要 apache nginx 这种 web 容器),在 i5 CPU 的 Linux 上,就可以并发 20w+ TCP 连接。单进程或者多进程模式下都比 node.js 高,比各种 python server 更是有数量级的优势。
    billlee
        17
    billlee  
       2016-10-15 01:12:36 +08:00
    并发的单位为什么是 s^-1, 这个单位是吞吐量吧
    这个锅确实得执行模式背
    msg7086
        18
    msg7086  
       2016-10-15 03:37:48 +08:00
    「所以要做读写分离」
    -> 所以要合理缓存……
    shiny
        19
    shiny  
       2016-10-15 03:42:43 +08:00
    进程数动态也是要调参数的,有最大进程数限制。
    默认的参数是比较低的。
    deyu260
        20
    deyu260  
       2016-10-15 07:26:15 +08:00
    快速写业务吧 赚钱了 堆机器 加负载均衡 各种分离
    myoula
        21
    myoula  
       2016-10-15 08:24:28 +08:00 via iPhone
    这样也敢称自己为架构师?系统、网络,应用都不做调优就下结论。
    sherlocktheplant
        22
    sherlocktheplant  
       2016-10-15 09:08:58 +08:00
    他知道 86 并发意味着多少 pv 吗?
    lan894734188
        23
    lan894734188  
       2016-10-15 09:49:15 +08:00 via Android
    用 hhvm 打他的脸
    rrfeng
        24
    rrfeng  
       2016-10-15 10:18:59 +08:00
    我只想吐槽题目:这特么也是三观
    likezun
        25
    likezun  
       2016-10-15 10:25:24 +08:00
    我虽然不是太懂,但我也知道: 吞吐量 和 并发(直接影响吞吐量) 是两回事!!!
    那货说的 86 和 300 应试指的是 吞吐量, 然而却没有说测试的并发用户是多少,所以完全没有意义!!!
    还有并发受程序,服务器硬件, web 服务,磁盘 io 等因素影响,不能单单让语言背锅!

    另外并发量需求设计也是根据实际情况不同而不同,例如:

    (从网上贴来)某网站存在注册用户数为 10W 人,但同时在线最多 1W 人,但这 1W 个人,可能只有 500 人会浏览帖子, 500 人会进行发帖,只有这 1000 个人对服务器才有交易,那我们计算并发量的时候,就可以以 1000 为标准(如果设计缓存则可以更低)!

    如果吞吐量低的话,这个时候应该为了这个并发量而去优化吞吐量。

    个人理解,请斧正。
    qwer1234asdf
        26
    qwer1234asdf  
       2016-10-15 10:57:33 +08:00
    返回一条 hello world 跟渲染一个模板的开销相比,不是一个数量级的
    qwer1234asdf
        27
    qwer1234asdf  
       2016-10-15 10:58:10 +08:00
    顺带说了,我工作电脑内存都 16G 了……你这还是 server 。。。
    cevincheung
        28
    cevincheung  
       2016-10-15 10:59:45 +08:00
    laravel 的性能的确不敢恭维。


    但是拿一个前端语言说事,这就不地道了。他们家是就一台家用 PC 当服务器的么?
    mrytsr
        29
    mrytsr  
       2016-10-15 13:59:13 +08:00 via Android
    opcache 开了没
    Rabbit52
        30
    Rabbit52  
       2016-10-15 14:03:34 +08:00
    laravel 的性能确实很低。
    Rabbit52
        31
    Rabbit52  
       2016-10-15 14:04:19 +08:00
    不过这是 fpm 的锅,用 php-pm 会屌很多
    pubby
        32
    pubby  
       2016-10-15 14:34:32 +08:00
    单台 300 并发反正我是不信的

    php 这种模式并发几十已经很多了,因为每一个并发请求都需要一个 php 进程服务,
    这时候系统 load 会很高,其实整体性能会很差。

    所以进程开太多其实是让系统死的时候更彻底。
    Akasha
        33
    Akasha  
       2016-10-15 15:06:11 +08:00
    架构师这个词已经被玩坏了
    wdlth
        34
    wdlth  
       2016-10-15 18:27:40 +08:00
    先把用户拉来再说吧,连个影都没有,就开始谈什么并发负载……
    cjyang1128
        35
    cjyang1128  
       2016-10-15 19:20:16 +08:00
    web 服务核心是需要开发快,如果真的要高并发可以上 swoole 这些。理论上能通过加机器解决的问题都不是问题。
    tabris17
        36
    tabris17  
       2016-10-15 19:28:25 +08:00
    第一条大致正确, laravvel 确实性能很差,又一个 zf 而已,性能比 Symfony 还差
    likezun
        37
    likezun  
       2016-10-15 20:38:11 +08:00
    @tabris17
    说 laravvel , zf , Symfony 性能很差,真是错了~
    它们都是高效的开发框架,开始的时候就集成了项目以后会有的功能和扩展(把你后面要做的高效而完美的实现了)。
    说到开发效率,可以甩 tp, ci 几条街! 不过你得会玩才行, 而不是简单看一下,搞了个 hello world ,对比了一下时间就说它太慢,性能差, 是并没有理解框架的精髓~

    另外,引用 symfonychina 的一句话, Symfony 是 php 的救赎,一个史无前例的伟大 php 框架
    tabris17
        38
    tabris17  
       2016-10-15 20:54:19 +08:00
    @likezun 你说的开发效率,我说的是执行性能,鸡同鸭讲。

    你要讲开发效率,我有更好的解决方案,何必被 PHP 拖累
    likezun
        39
    likezun  
       2016-10-15 22:57:59 +08:00
    @tabris17
    执行性能(应该指单位时间内所做的事)的话, laravel , zf , Symfony 也是高性能的。
    如果说拿输出 hello world 来做衡量标准的话,我表示程序什么都不干时是执行性能最高的。
    还有就 web 开发效率来说, PHP 应该是最高效率的解决方案了
    jin0927
        40
    jin0927  
       2017-06-30 09:17:37 +08:00   ❤️ 1
    你是 PHP 啊?
    sunmonster
        41
    sunmonster  
    OP
       2017-06-30 10:26:15 +08:00
    @jin0927 对啊,php 咋了
    jin0927
        42
    jin0927  
       2017-06-30 10:37:11 +08:00
    @sunmonster 推荐几个 JAVA 吧,哈哈哈~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2664 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:41 · PVG 15:41 · LAX 23:41 · JFK 02:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.