今天听了一个所谓的架构师的言论,颠覆了我的三观 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunmonster
V2EX    问与答

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

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

    我是做 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  
    PRO
       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 开了没
    tunetoystory
        30
    tunetoystory  
       2016-10-15 14:03:34 +08:00
    laravel 的性能确实很低。
    tunetoystory
        31
    tunetoystory  
       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     Solana     1100 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 17:36 PVG 01:36 LAX 09:36 JFK 12:36
    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