我是做 php 开发的,同时也会做一些运维,前端,数据库方面的工作,对这些也算有些基本的了解。今天跟那个架构师讨论了一些关于架构的一些问题,他说的话跟我自己所总结出来的完全相反,而且我也不是很认同他,主要有以下几点:
关于基本的 lemp 架构优化,我说 nginx , PHP 已经很快了,对于一个应用,它在发展的过程中首先出现的瓶颈是 DB ,所以要做读写分离。他说我是错的, php 的并发量是很低的,他说他做过测试, Laravel 只输出 hello world 的并发量才每秒 86 ,我不信,他说很多人都不信,但是我们做过测试,你有做过测试吗?我确实没做过,但是以我的经验来说不会这么底,他说 CI 也就 300 的并发量,所以做高并发的网站 laravel 框架是不行的。
因为他们用的服务器内存是 16G ,我问他你们 fpm 进程开了多少?他说不知道,我说 16G 大内存 fpm 坑定要设置成静态的,按照 50 ~ 100M 分配一个 fpm 进程,预留一些系统内存开销,很容易估算出大致进程数。他说他们是设置成动态的,进程数是一直在变的,所以不知道。
很多时候我想发表一些想法,他马上打断我说这是不行的,我说我还没说想怎样呢,他说你不就是想这样这样吗?
最后我向他要测试报告,他说这是公司内部信息,不方便提供,我也不好说啥。
1
cxbig 2016-10-14 20:25:56 +08:00
这年头满地"砖家”,拿不出事实基础的,不用太过在意。
拿 Hello World 来做并发测试说明不了什么问题,不同的 Application 情况不一样。 |
2
visonme 2016-10-14 20:27:37 +08:00
听说动嘴皮的工资都比干实事的高
|
3
pi1ot 2016-10-14 20:30:32 +08:00
双方都是在自己划定的场景内无意义的空对空 PK 。
|
4
likezun 2016-10-14 20:33:41 +08:00
垃圾架构师~
|
5
wd 2016-10-14 20:34:42 +08:00 via iPhone
对于 1 你有空发帖没空测试吗?
|
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 |
7
Midnight 2016-10-14 20:50:13 +08:00
用不同框架来做这种测试 真是咸的蛋疼啊。。。。
|
8
Infernalzero 2016-10-14 20:52:47 +08:00
对于 web 应用,太过专注于应用本身的并发意义不大,因为这都可以通过加机器解决,最终的瓶颈就是在存储层
|
9
sunmonster OP @pi1ot 请问这需要什么场景呢,他是强调 php 慢,并不是 php 有多快,测试 hello world 不能说明 php 有多块,但是如果 hello world 都很慢,难道增加业务量会很快?
|
10
sunmonster OP @wd 如何测试?他说的测试环境配置,以及如何测试的我都不知道,有比较的意义?如果只是想证明 laravel 的并发量大于 86 ,我之前运营的都上 300 了,所以说我不信,最后还向他要测试报告,想搞清楚他是怎么测试的
|
11
pi1ot 2016-10-14 21:21:11 +08:00
@sunmonster 任何有意义的 profile 结果和对比都是在限定需求场景下实际运行测试得出的,你说做过测试,是什么硬件条件,什么测试方式,他说达不到,又是什么情况,从你的描述是看不出来的。
|
12
wayslog 2016-10-14 21:25:55 +08:00 via Android
这…… php 的并发看来真的低啊……我用 Python 都能随意达到千……(当然抛弃场景谈 benchmark 是一件很扯淡的事儿……
|
13
mcfog 2016-10-14 21:34:42 +08:00 via Android
先不说技术什么的,讨论的时候不断打断对方的人就别和他讨论了,不会有什么建设性的
|
14
ovear 2016-10-14 21:48:36 +08:00 3
|
15
huigeer 2016-10-14 23:11:24 +08:00 via iPhone
解释性语言性能差很正常,满足需求就行。 laravel 开启 opcache 和啊开启,差好几倍,做过测试
|
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 更是有数量级的优势。 |
17
billlee 2016-10-15 01:12:36 +08:00
并发的单位为什么是 s^-1, 这个单位是吞吐量吧
这个锅确实得执行模式背 |
18
msg7086 2016-10-15 03:37:48 +08:00
「所以要做读写分离」
-> 所以要合理缓存…… |
19
shiny 2016-10-15 03:42:43 +08:00
进程数动态也是要调参数的,有最大进程数限制。
默认的参数是比较低的。 |
20
deyu260 2016-10-15 07:26:15 +08:00
快速写业务吧 赚钱了 堆机器 加负载均衡 各种分离
|
21
myoula 2016-10-15 08:24:28 +08:00 via iPhone
这样也敢称自己为架构师?系统、网络,应用都不做调优就下结论。
|
22
sherlocktheplant 2016-10-15 09:08:58 +08:00
他知道 86 并发意味着多少 pv 吗?
|
23
lan894734188 2016-10-15 09:49:15 +08:00 via Android
用 hhvm 打他的脸
|
24
rrfeng 2016-10-15 10:18:59 +08:00
我只想吐槽题目:这特么也是三观
|
25
likezun 2016-10-15 10:25:24 +08:00
我虽然不是太懂,但我也知道: 吞吐量 和 并发(直接影响吞吐量) 是两回事!!!
那货说的 86 和 300 应试指的是 吞吐量, 然而却没有说测试的并发用户是多少,所以完全没有意义!!! 还有并发受程序,服务器硬件, web 服务,磁盘 io 等因素影响,不能单单让语言背锅! 另外并发量需求设计也是根据实际情况不同而不同,例如: (从网上贴来)某网站存在注册用户数为 10W 人,但同时在线最多 1W 人,但这 1W 个人,可能只有 500 人会浏览帖子, 500 人会进行发帖,只有这 1000 个人对服务器才有交易,那我们计算并发量的时候,就可以以 1000 为标准(如果设计缓存则可以更低)! 如果吞吐量低的话,这个时候应该为了这个并发量而去优化吞吐量。 个人理解,请斧正。 |
26
qwer1234asdf 2016-10-15 10:57:33 +08:00
返回一条 hello world 跟渲染一个模板的开销相比,不是一个数量级的
|
27
qwer1234asdf 2016-10-15 10:58:10 +08:00
顺带说了,我工作电脑内存都 16G 了……你这还是 server 。。。
|
28
cevincheung 2016-10-15 10:59:45 +08:00
laravel 的性能的确不敢恭维。
但是拿一个前端语言说事,这就不地道了。他们家是就一台家用 PC 当服务器的么? |
29
mrytsr 2016-10-15 13:59:13 +08:00 via Android
opcache 开了没
|
30
Rabbit52 2016-10-15 14:03:34 +08:00
laravel 的性能确实很低。
|
31
Rabbit52 2016-10-15 14:04:19 +08:00
不过这是 fpm 的锅,用 php-pm 会屌很多
|
32
pubby 2016-10-15 14:34:32 +08:00
单台 300 并发反正我是不信的
php 这种模式并发几十已经很多了,因为每一个并发请求都需要一个 php 进程服务, 这时候系统 load 会很高,其实整体性能会很差。 所以进程开太多其实是让系统死的时候更彻底。 |
33
Akasha 2016-10-15 15:06:11 +08:00
架构师这个词已经被玩坏了
|
34
wdlth 2016-10-15 18:27:40 +08:00
先把用户拉来再说吧,连个影都没有,就开始谈什么并发负载……
|
35
cjyang1128 2016-10-15 19:20:16 +08:00
web 服务核心是需要开发快,如果真的要高并发可以上 swoole 这些。理论上能通过加机器解决的问题都不是问题。
|
36
tabris17 2016-10-15 19:28:25 +08:00
第一条大致正确, laravvel 确实性能很差,又一个 zf 而已,性能比 Symfony 还差
|
37
likezun 2016-10-15 20:38:11 +08:00
@tabris17
说 laravvel , zf , Symfony 性能很差,真是错了~ 它们都是高效的开发框架,开始的时候就集成了项目以后会有的功能和扩展(把你后面要做的高效而完美的实现了)。 说到开发效率,可以甩 tp, ci 几条街! 不过你得会玩才行, 而不是简单看一下,搞了个 hello world ,对比了一下时间就说它太慢,性能差, 是并没有理解框架的精髓~ 另外,引用 symfonychina 的一句话, Symfony 是 php 的救赎,一个史无前例的伟大 php 框架 |
39
likezun 2016-10-15 22:57:59 +08:00
@tabris17
执行性能(应该指单位时间内所做的事)的话, laravel , zf , Symfony 也是高性能的。 如果说拿输出 hello world 来做衡量标准的话,我表示程序什么都不干时是执行性能最高的。 还有就 web 开发效率来说, PHP 应该是最高效率的解决方案了 |
40
jin0927 2017-06-30 09:17:37 +08:00 1
你是 PHP 啊?
|
41
sunmonster OP @jin0927 对啊,php 咋了
|
42
jin0927 2017-06-30 10:37:11 +08:00
@sunmonster 推荐几个 JAVA 吧,哈哈哈~
|