解释:为什么论坛这么慢
novakon2016/02/10软件综合 IP:广西
下图是ApacheBench对论坛首页(XXXXXXXXXXXXXXXX/XXXXXXXXp)的测试结果。共10请求,2并发:

QQ20160210-0@2x.png



平均每个请求的完成时间是1200毫秒,网络延迟(约50毫秒)的影响可以忽略不计。测试发现,不管用2并发还是单发,每个请求的处理时间都保持基本不变,均接近1200毫秒。测试还发现,对静态文件的访问(比如js文件)响应速度极快,可忽略不计,这就说明长达1.2秒的时间,基本都花在运行php脚本上了。
搞软件的同学读到这里估计要跳起来了,首页html内容才24kb,生成24kb的html需要1.2秒,这是什么年代的计算机?再者,就算服务器是双路至强有16核,如果每个访问占用每个核心1.2秒,这不就等于在说,只要每秒钟产生15个左右的访问,服务器就会完全卡死?


随后我又测试了 XXXXXXXXXXXXXXXXXXXXXXXX/t/78531 ,平均需要1.7秒。
联想到最近有越来越多的同学说论坛不好用,说qq方便,都在群里发言而不愿意上论坛,我实在是开心不起来。有一点是可以肯定的:今天的科创论坛,比08年的科创论坛还慢,比每天1000万访问量的知乎还慢。


这是谁的错?
下面的解释,能比较客观而片面的回答一下这个问题。


因为科创论坛用的是php。
对web技术稍微有点了解的同学一定知道php,它是这个星球上最普及的服务器脚本语言,历史可以回溯到1995年。彼时,php的发明给无数堆砌html的小朋友们点起了一盏明灯,指明了一条方向。

但是php真的很慢。不过慢并不是php的罪恶——php的原意,是在html中用<?php>标记,插入服务器生成的动态内容。这能有多少运算量?不过是图个方便耳。1995年的今天,大家不再需要写c语言程序接收表单数据、输出html以实现动态内容,而是直接在html中插入perl语法的脚本段——简直神作!php对web的普及立下了汗马功劳。

然而同时也要考虑历史的进程
随着web应用越来越复杂,功能越来越花哨,界面越来越华丽,php不再仅仅被用于获取表单输入——php被用来干所有事情:数据库读写,输出JSON响应,渲染模板,计算图表……这就如同一把剪刀,被当成了锤子、改锥兼订书机。
如果你问任何一个程序员,是不是应该用不同的语言解决不同的问题,他几乎一定会表示同意。然而彼时web开发的大潮冲昏了所有人的头脑,大家开始用php解决所有问题;如果一个操作用PHP实在是太慢,以至于所有人都无法接受了,就会有人用C语言写一个PHP模块,供调用……


php到底有多慢?
目前业界最流行的几种服务器语言:JavaScript,PHP,C#,Java。
JS(基于V8引擎)和C#目前都属于编译语言,很快。Java由于基于JVM虚拟机,速度次之,但是用户基数大。
PHP今天绝大多数时候仍然是解释语言(除非你用HHVM),而且最常见的形式是从文件实时加载,速度大概是JS的1/20~1/50左右。
用数据说话?网上的对比太多了,就不搬运垃圾了。

这样看来php真的很慢哦。那为什么不换呢
因为科创一如既往地“懒”。无论是PW还是DZ,多年以来我们总是在用那些已经臃肿不堪、积重难返的产品。今天科创正在用的PHPWind,其团队已经散伙,DZ的创始人则远走高飞……然而这时我们没有选择——我们再也没有免费的产品可用了,但也几乎没有产品可用了。《物以稀为贵》,道理都懂,但一到实践起来,我们总会被各种各样的成见禁锢;往往只有在真正撞到悬崖上的时候,才猛然醒悟过来,曾经的自信是多么地可笑。

有人说我是负面人格,我同意。我喜欢看事情的负面,因为它能保持人的清醒,越消极越清醒。
来自:计算机科学 / 软件综合
25
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
novakon 作者
8年10个月前 IP:广西
808004
引用 张静茹:
还好呀,没感觉 那么慢 青岛 联通 10M
从你按下刷新,到页面开始载入,需要1秒左右。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年10个月前 IP:广西
808007
引用 虎哥:
对于日IP十万以下站点,PHP是足够使用的。KC现在已经比当年DZ时代快了很多了,依然不够很快的主要原因是服务器上错误太多,多得都不敢开错误日志,我也懒得修。

现在网发局在叉领导下正在开发先进的系统,大家可以拭目以待。
日IP的概念,其实主要是因为缓存。浏览过的文件不会再次下载,而是直接从缓存载入。因此只有日IP而不是日点击量影响带宽开销。但这和CPU开销是两码事,因为就算页面内容没有任何变化,重新渲染的步骤也无法跳过(不然无法知道页面内容是否有变化)。每天有80000秒,活跃时间按照2000秒来计算,10W点击高斯分布就意味着峰值每秒钟50个请求;如果定义日IP十万的话,日点击至少20-50W,因此笼统的说“日IP十万以下站点,PHP是足够使用的”可能不合适。特别是考虑到服务质量,请求数量上升的时候返回可能就会长达2-5秒,令人难以接受。
还是要考虑架构上的因素,考虑具体程序的优化程度——当然,只有php需要各种方法“优化”,因为实在是太慢了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年10个月前 IP:广西
808021
引用 王者归来abs:
为啥我不到0.5秒就打开啊
你们打开谷歌浏览器的调试界面,时间轴截个图。

顺便提醒,如果仔细看测试数据,会发现最短0.5秒,最长2.4秒。所以刷新有时快是正常的。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年10个月前 IP:广西
808134
引用 rainyuoko:
感觉正相反,有一半时间都在加载各种图片和js,页面渲染用时很短。ctrl+f5重载入。
从你的这张图来看,页面渲染应该是700毫秒左右。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年10个月前 IP:广西
808135
引用 张静茹:
you right 确实是1.7秒左右,但是主观上感觉速度 还可以接受
你要把列表翻到最上面,看第一个请求(html)的响应时间。另外建议把disable cache打上勾。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年9个月前 IP:广东
813850
引用 暗夜幽灵:
php里面有专门给iis用的dll
目前论坛是WIMP。新论坛是CentOS+Nodejs+ArangoDB
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年9个月前 IP:广东
813979
引用 暗夜幽灵:
Centos应该不安装桌面吧,Linux的桌面很拖性能的。
这是自然。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
novakon
学者 机友 笔友
文章
1256
回复
8386
学术分
16
2008/03/29注册,2年10个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}