比如让 Web 网站的,页面响应速度更快,支持的在线人数更多。是用 CDN,mysql 主从分离, redis,还有性能高的 web 框架,比如 java 的 spring,go 的 revel , nodejs 的 express , python 的 flask 居中, rails 次之, php 的 laravel 性能最低。在众多的因素中, web 框架自身的性能占高性能的 web 站点中的多少比例。
例如本站 v2ex,从支持 100 人在线,到 1000 人在线,到 10000 人在线,到 100000 人, 1000000 人在线等,是换站点 WEB 框架为高性能的语言的 WEb 框架就能解决。还是必须要增加硬件和 CDN , redis 缓存, mysql 主从分离这些才能解决。哪种方案性价比高。框架本身性能可以忽略不计吗?哪怕你用最慢的 laravel 框架。
总而言之一句话,应付大流量,并且页面快速响应,不断掉,上面哪些因素占主要的。哪些是可以忽略的次要因素。
1
nonozone 2015-12-18 09:36:11 +08:00 2
这个首先要考虑你所要面对的具体状况。现在 100 人在线就考虑 100 人在线的情况, 1000 人再考虑 1000 的时候。
凭空谈有啥好谈的,不同的情况所采取的方式肯定也不同,各种成本,是技术成本比较高,还是操作成本比较高还是单纯的金钱成本,都有取舍。哪种方案都不是千面杀手。 |
3
moji2016 OP @nonozone 关键是现在算不出来用户量增长的速度,所以要考虑尽可能多的满足快的增长。
附各框架性能链接: https://www.techempower.com/benchmarks/#section=data-r11&hw=peak&test=query 当前好像 php 最易用 laravel 框架性能最低。 |
4
moji2016 OP @TangMonk 如果一开始选择了最好用的,但是性能最低的框架, 以后网站打不开了,会不会有大的麻烦和烦恼。就像刚开始配置了一台赛扬的机器,结果确发现慢得打开几个程序就卡死。这时维修更换成本会不会太大了些。 web 框架是不是也和 CPU 装机这种是一个道理,一样吗。
|
5
oott123 2015-12-18 09:47:58 +08:00 via Android
算不出增长的网站,要么不合法,要么烧钱…
反正两者来钱都很快,扛不住了就上机器,上不了了就出钱找人重写… |
6
JohnLou 2015-12-18 09:50:05 +08:00
@moji2016 我用的 CI 框架在 10 几块钱一个月的虚拟主机上跑得秒开,之后赶时髦换成 laravel 明显没那种体验了又换回来 CI ,我觉得框架并不是越先进越好,我用 CI 三年了,源码都快背熟了,哪里可以优化就优化提速。
|
7
moji2016 OP @oott123 是不是 PHP 的框架和网站,每当内存和 CPU 加一倍时,性能就会提升一倍,支持的访问量就多一倍呢。
|
8
Lucups 2015-12-18 09:55:39 +08:00
要考虑的因素太多了。
你的网站主要是什么业务?视频?论坛?博客?图库?不用的业务场景重点优化对象不同。 另外就是现在云服务多如牛毛,可以适当地用上。比如图片视频的什么的占流量的直接放云存储,不要放应用服务器。 此外就是监控,根据日志分析你的应用瓶颈在哪,然后做有针对性的优化。 |
9
moji2016 OP @JohnLou 是的,在当前情况下,用 CI3 感觉像穿中山装的感觉,看上面的测评 ci 也比 laravel 性能好,比 flask 略低。和 java go nodejs 哪些框架没得比。 ci 比 rails 略高。为何没有 django rails 这可是世界上有大型网站使用的技术。 laravel 也能通过架构解决大型站点的性能问题吗,像 rails 和 django 一样,因为没有大型成功网站案例,所以目前对他的性能可用性抱怀疑态度。
|
10
wy315700 2015-12-18 10:00:34 +08:00
感觉楼主是来黑 PHP 的
|
11
okeydokey 2015-12-18 10:02:36 +08:00 1
@moji2016 可以看下《构建高性能 web 站点》,网站初期活下来时关键,因此一开始选用最好用的,后期真的做大了再考虑性能,这些都是幸福的烦恼,不用太担心,有那么多轮子可以借鉴,淘宝初期就是 php 后来才切到 java 的
|
12
yernsun 2015-12-18 10:05:53 +08:00
看看是计算密集型的还是数据业务密集型的吧,计算密集的,程序语言肯定是比较重要的。如果是数据业务密集型,那么瓶颈往往都在 DB 上,换程序语言不如加缓存、提高磁盘 IO 甚至优化 SQL 来的实在。
|
13
kongkongyzt 2015-12-18 10:16:06 +08:00 1
我猜楼主可能没有做过高并发和海量流量的项目, 或者是没有很完整地经历过一个网站从单机起步, 随着流量的增长架构不断进化的过程, 当然, 并不是什么人都有机会经历这个过程收获技术上的巨大成长的
一般来说, 制约性能的主要问题往往不是使用的编程语言和框架, 这些框架的测试有一定的参考性, 但不是性能热点, 对于一般的业务来说, 性能开销很大程度上集中在网络, 磁盘 IO, 数据库和你所设计的架构, 而做的优化也会和你的架构, 你的业务形式息息相关. 性能优化的方式和手段有很多, 常见的比如异步化, 服务化(RPC, web service), 分布式. 我觉得最立竿见影的方式是负载均衡, 效果比较明显.很多公司到最后采用自研框架的形式, 我觉得性能倒不是非常重要的原因, 而是业务需要高度的定制化, 原来的开源框架已经不能满足业务的需求了 |
14
nonozone 2015-12-18 10:18:58 +08:00
@moji2016 技术不确定的时候,就先把业务搞好。只要业务发展起来了,后面的技术都可以慢慢改善。但是前期技术高大上,但是业务层面萎靡不振,又有何用。
并且就算你技术上感觉上已经搞了一个非常牛逼的结构,你会发现,一旦跟你业务结合起来的时候,麻烦的问题一样一个接着一个。 反正就是,先从你熟悉的弄。不熟悉的东西,一方面你无法评测这个是不是适合自己,而是出现问题自己也不知道怎么解决。 |
16
k9982874 2015-12-18 10:23:45 +08:00
web 简单就是堆机器上 haproxy
|
17
baoma511 2015-12-18 10:24:00 +08:00
不过我也理解楼主,我目前也有这样的状态,当然,前期要把架构选型做好,方便后期扩展和升级,还有就是我深深的理解,随便做一个站很容易,想做一个不随便的站真的不容易,会牵涉到很多东西,不单单是业务方面的,还有网络方面的,加油!
|
18
reeco 2015-12-18 10:30:20 +08:00
你的机器<10 所有应用 all in one 的时候,性能瓶颈在于 orm 和 io ,在框架上想方设法节省的一点性能可能一句 SELECT 就浪费了
|
19
tonyVex 2015-12-18 10:35:17 +08:00
磁盘 IO , CDN ,高可用,负载均衡,缓存,读写分离等 。架构上面 ,不同应用不同的场景切入点不一样。
|
20
zonghua 2015-12-18 11:20:24 +08:00 via iPhone
我好奇 Spring 映射的 rmurl 多了会不会影响性能
|
21
c742435 2015-12-18 11:52:13 +08:00 via Android
一个这样问问题的人 /团队,很大可能没有构建那样高性能系统的技术实力。
告诉你个最简单的办法,上云,数据库鼠标点点就能扩展,业务服务器鼠标点点就能随便加。等到云满足不了你们的需求了,你们也有钱招能搞定的人了。 |
23
ryd994 2015-12-18 13:00:48 +08:00 via Android
一开始能考虑一下可扩展性自然是好的,考虑一下就够了。
Web 前端一般是可以直接用 loadbalancer 直接横向扩展的。最后的瓶颈一般落在数据库等后端上。所以前端框架就算选错了,多用点资源也没什么大不了的。 |
24
ryd994 2015-12-18 13:04:40 +08:00 via Android
@moji2016 会什么用什么,什么顺手用什么。还有比 flask 更快的 bottle 呢,还有更快的不用框架裸写 wsgi 呢。互联网企业一般开发重点不在性能上,因为入我上面所说,横向扩展不难。重点一般是迭代周期和可用性。只要能快速出新功能,而且顶住不出大篓子,就是好框架。
|
25
shajiquan 2015-12-18 13:19:03 +08:00
Google 有很多项目,在很多项目发起时,都做了大量的提前优化,因为感觉会人多到爆。但事实并非如此。
前几天看新闻有讲。 |
26
loading 2015-12-18 13:28:20 +08:00 via Android
从一开始就用 go …
|
27
c742435 2015-12-18 15:14:52 +08:00 via Android
|
29
cnbiglee 2015-12-18 15:21:04 +08:00
如果预计不到以后的情况,那就到一个阶段做一个改进。可以到时看瓶颈在哪,再决定做哪方面的改进。
|
30
liujiangbei 2015-12-18 18:13:30 +08:00
空谈误国,实干兴邦,楼主提到的这些技术栈都能构建高性能 web 站点。楼主应该从实际情况出发,找到瓶颈是什么?
|
31
neoblackcap 2015-12-18 18:51:25 +08:00
我见过很多刚开始就考虑高性能的公司,现在他们都死了。
便宜,高性能,好找人,只能取两者 |
32
Daddy 2015-12-19 00:34:47 +08:00
没什么,归结起来就是:心太大,总想着一步到位。 还没网站,更没运营,就想着最高起点,用最好的语言,用最好的服务器,用最好的宽带。
还没女朋友,就想着各种旅行、各种姿势、各种体位…… |